Advertisement
ya_zay4eg

level09.lesson11.bonus03

Jan 23rd, 2015
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.59 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. import java.util.Arrays;
  7.  
  8. /* Задача по алгоритмам
  9. Задача: Пользователь вводит с клавиатуры список слов (и чисел).
  10. Слова вывести в возрастающем порядке, числа - в убывающем.
  11. Пример ввода:
  12. Вишня
  13. 1
  14. Боб
  15. 3
  16. Яблоко
  17. 2
  18. 0
  19. Арбуз
  20. Пример вывода:
  21. Арбуз
  22. 3
  23. Боб
  24. 2
  25. Вишня
  26. 1
  27. 0
  28. Яблоко
  29. */
  30. /*
  31. * На тех местах, где были цифры оставляем цифры
  32. * На те местах где были буквы ставим буквы
  33. * Буквы от меньшего к большему
  34. * Цыфры от большего к меньшему
  35. * 1. Должны перефасовать
  36. *   1.1 отдельно массив цифры
  37. *   1.2 отдельно массив буквы
  38. * 2. Берем стартовый порядок (массив)
  39. *   2.1 Проверяем цыфра это или буква
  40. *   2.2 в зависимости от результата выбираем массив.
  41. *   2.3 вставляем в финальный массив.
  42. *
  43. * */
  44.  
  45. public class Solution
  46. {
  47.     public static void main(String[] args) throws Exception
  48.     {
  49.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  50.         ArrayList<String> list = new ArrayList<String>();
  51.         while (true)
  52.         {
  53.             String s = reader.readLine();
  54.             if (s.isEmpty()) break;
  55.             list.add(s);
  56.         }
  57.  
  58.         String[] array = list.toArray(new String[list.size()]);
  59.         sort(array);
  60.  
  61.         for (String x : array)
  62.         {
  63.             System.out.println(x);
  64.         }
  65.     }
  66.  
  67.     public static void sort(String[] array)
  68.     {
  69.         //Напишите тут ваш код
  70.         /*/////Разделяем цифры и строки/////*/
  71.         ArrayList<Integer> integerArrayList = new ArrayList<Integer>();
  72.         ArrayList<String> stringArrayList = new ArrayList<String>();
  73.         for (String fromArray : array)
  74.         {
  75.             if (isNumber(fromArray))
  76.             {
  77.                 integerArrayList.add(Integer.parseInt(fromArray));
  78.             }
  79.             else if (isNumber(fromArray) == false)
  80.             {
  81.                 stringArrayList.add(fromArray);
  82.             }
  83.         }
  84.         /*переганяем ArrayList to Array (integers)*/
  85.         int [] newIntList = new int[integerArrayList.size()];
  86.         for (int i = 0; i<integerArrayList.size(); i++) {
  87.             newIntList[i] = integerArrayList.get(i);
  88.         }
  89.  
  90.                /*переганяем ArrayList to Array (Strings)*/
  91.         String [] newStringList = new String[stringArrayList.size()];
  92.         for (int i = 0; i<stringArrayList.size(); i++) {
  93.             newStringList[i] = stringArrayList.get(i);
  94.         }
  95.                /*сортируем int*/
  96.         int temp;
  97.         for (int i = 0; i<newIntList.length-1;i++) {
  98.             for (int j = 1; j<newIntList.length-i; j++) {
  99.                 if (newIntList[j-1]<newIntList[j]) {
  100.                     temp = newIntList[j-1];
  101.                     newIntList[j-1] = newIntList[j];
  102.                     newIntList[j] = temp;
  103.                 }
  104.             }
  105.         }
  106.                /*сортируем String*/
  107.         String temp2;
  108.         for (int i = 0; i<newStringList.length-1;i++) {
  109.             for (int j = 1; j<newStringList.length-i; j++) {
  110.                 if (isGreaterThen(newStringList[j-1], newStringList[j])) {
  111.                     temp2 = newStringList[j-1];
  112.                     newStringList[j-1] = newStringList[j];
  113.                     newStringList[j] = temp2;
  114.                 }
  115.             }
  116.         }
  117.        
  118.         /*добиваем кабана*/
  119. /*//////////////////////////////*/
  120.         int z=0;
  121.         int y=0;
  122.  
  123.         String[] finalArray = new String[array.length];
  124.         for (int i = 0; i<array.length;) {
  125.             if (isNumber(array[i])) {
  126.                finalArray[i] = newIntList[z]+"";
  127.                 i++;
  128.                 z++;
  129.             }
  130.             else if (isNumber(array[i])==false) {
  131.                 finalArray[i]=newStringList[y];
  132.                 i++;
  133.                 y++;
  134.             }
  135.         }
  136.         for (int i =0;i<finalArray.length;i++) {
  137.             array[i] = finalArray[i];
  138.         }
  139.         /*
  140.         System.out.println("Attention");
  141.         for (int i = 0;i<finalArray.length;i++) {
  142.             System.out.println(finalArray[i]);
  143.         }
  144.         System.out.println("Attention");
  145.         */
  146.     }
  147.  
  148.  
  149.        
  150. /*//////////////////////////////*/
  151.  
  152.  
  153.  
  154.  
  155.     /*не трогаем руками*/
  156.     //Метод для сравнения строк: 'а' больше чем 'b'
  157.     public static boolean isGreaterThen(String a, String b)
  158.     {
  159.         return a.compareTo(b) > 0;
  160.     }
  161.  
  162.  
  163.     //строка - это на самом деле число?
  164.     public static boolean isNumber(String s)
  165.     {
  166.         if (s.length() == 0) return false;
  167.  
  168.         char[] chars = s.toCharArray();
  169.         for (int i = 0; i < chars.length; i++)
  170.         {
  171.             char c = chars[i];
  172.             if ((i != 0 && c == '-') //есть '-' внутри строки
  173.                     || (!Character.isDigit(c) && c != '-') ) // не цифра и не начинается с '-'
  174.             {
  175.                 return false;
  176.             }
  177.         }
  178.         return true;
  179.     }
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement