Advertisement
jaVer404

level09.lesson11.bonus03

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