Guest User

Untitled

a guest
May 21st, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.20 KB | None | 0 0
  1. package com.javarush.task.task09.task0930;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.InputStreamReader;
  5. import java.util.ArrayList;
  6. import java.util.Collection;
  7. import java.util.Collections;
  8. import java.util.Comparator;
  9.  
  10. /*
  11.  
  12. Задача по алгоритмам*0930
  13. Задача: Пользователь вводит с клавиатуры список слов (и чисел).
  14. Слова вывести в возрастающем порядке, числа - в убывающем.
  15.  
  16. Пример ввода:
  17. Вишня
  18. 1
  19. Боб
  20. 3
  21. Яблоко
  22. 22
  23. 0
  24. Арбуз
  25.  
  26. Пример вывода:
  27. Арбуз
  28. 22
  29. Боб
  30. 3
  31. Вишня
  32. 1
  33. 0
  34. Яблоко
  35.  
  36.  
  37. Требования:
  38. 1. Программа должна считывать данные с клавиатуры.
  39. 2. Программа должна выводить данные на экран.
  40. 3. Выведенные слова должны быть упорядочены по возрастанию.
  41. 4. Выведенные числа должны быть упорядочены по убыванию.
  42. 5. Метод main должен использовать метод sort.
  43. 6. Метод sort должен использовать метод isGreaterThan.
  44. 7. Метод sort должен использовать метод isNumber.
  45. */
  46.  
  47. public class Solution {
  48. public static void main(String[] args) throws Exception {
  49. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  50. ArrayList<String> list = new ArrayList<String>();
  51. while (true) {
  52. String s = reader.readLine();
  53. if (s.isEmpty()) break;
  54. list.add(s);
  55. }
  56.  
  57. String[] array = list.toArray(new String[list.size()]);
  58. sort(array);
  59.  
  60. for (String x : array) {
  61. System.out.println(x);
  62. }
  63. }
  64.  
  65. public static void sort(String[] array) {
  66. //напишите тут ваш код
  67. ArrayList<Integer> digitalIndexesOfArray = new ArrayList<>();
  68. ArrayList<Integer> stringIndexesOfArray = new ArrayList<>();
  69. ArrayList<String> stringsOfArray = new ArrayList<>();
  70. ArrayList<Integer> digitalsOfArray = new ArrayList<>();
  71. String temp;
  72.  
  73.  
  74. for (int i = 0; i < array.length; i++) {
  75.  
  76. if(isNumber(array[i])){
  77. digitalIndexesOfArray.add(i);
  78. digitalsOfArray.add(Integer.parseInt(array[i]));
  79. }else{
  80. stringIndexesOfArray.add(i);
  81. stringsOfArray.add(array[i]);
  82. }
  83.  
  84. }
  85.  
  86. Collections.sort(digitalsOfArray);
  87. Collections.reverse(digitalsOfArray);
  88.  
  89. for (int i = 0; i < stringsOfArray.size(); i++) {
  90.  
  91. for (int j = i + 1; j < stringsOfArray.size(); j++) {
  92.  
  93. if(isGreaterThan(stringsOfArray.get(i), stringsOfArray.get(j))){
  94. temp = stringsOfArray.get(i);
  95. stringsOfArray.set(i, stringsOfArray.get(j));
  96. stringsOfArray.set(j, temp);
  97. }
  98.  
  99. }
  100.  
  101. }
  102.  
  103. int countDigital = 0;
  104. int coutyString = 0;
  105.  
  106. for (int i = 0; i < array.length; i++) {
  107.  
  108.  
  109. if(isNumber(array[i])){
  110.  
  111. array[i] = digitalsOfArray.get(countDigital).toString();
  112. ++countDigital;
  113. }else{
  114. array[i] = stringsOfArray.get(coutyString);
  115. ++coutyString;
  116. }
  117.  
  118. }
  119.  
  120.  
  121. }
  122.  
  123. // Метод для сравнения строк: 'а' больше чем 'b'
  124. public static boolean isGreaterThan(String a, String b) {
  125. return a.compareTo(b) > 0;
  126. }
  127.  
  128.  
  129. // Переданная строка - это число?
  130. public static boolean isNumber(String s) {
  131. if (s.length() == 0) return false;
  132.  
  133. char[] chars = s.toCharArray();
  134. for (int i = 0; i < chars.length; i++) {
  135. char c = chars[i];
  136. if ((i != 0 && c == '-') // есть '-' внутри строки
  137. || (!Character.isDigit(c) && c != '-') // не цифра и не начинается с '-'
  138. || (i == 0 && c == '-' && chars.length == 1)) // не '-'
  139. {
  140. return false;
  141. }
  142. }
  143. return true;
  144. }
  145. }
Add Comment
Please, Sign In to add comment