не принимает решения - не выполнены поcледние 3 требования
package com.javarush.task.task09.task0930;
import java.io.*;
import java.io.InputStreamReader;
import java.util.*;
import java.util.Collections;
/*
Задача по алгоритмам
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> list = new ArrayList<>();
while (true) {
String s = reader.readLine();
try {
if (s.isEmpty()) break;
} catch(NullPointerException e) {
break;
}
list.add(s);
}
String[] array = list.toArray(new String[0]);
String[] new1 = sort(array);
for (String x : new1) {
System.out.println(x);
}
}
public static String[] sort(String[] array) throws NullPointerException {
int y = array.length;
ArrayList<String> str1 = new ArrayList<>();
ArrayList<Integer> numbers1 = new ArrayList<>();
for (int i = 0; i < array.length; i++) {
boolean a = isNumber(array[i]);
if (a == false) {//строка
str1.add(array[i]);
} else {
int r = Integer.parseInt(array[i]);
numbers1.add(r);
}
}
String[] str = str1.toArray(new String[0]);
int[] numbers = new int[numbers1.size()];
for (int i = 0; i < numbers1.size(); i++) {
numbers[i] = numbers1.get(i);
}
String t;
for (int i = str.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
boolean m = isGreaterThan(str[j], str[j + 1]);
if (m == true) {
t = str[j];
str[j] = str[j + 1];
str[j + 1] = t;
}
}
}
int d;
for (int i = numbers.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (numbers[j] < numbers[j + 1]) {
d = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = d;
}
}
}
String[] arrayNew = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
String b = String.valueOf(numbers[i]);
arrayNew[i] = b;
}
String[] newArray = new String[array.length];
for (int i = 0; i < array.length; i++) {
boolean a = isNumber(array[i]);
if (a == false) {//строка
newArray[i] = str[0];
for (int j = 0; j < str.length - 1; j++) {
str[j] = str[j + 1];
}
} else {
newArray[i] = arrayNew[0];
for (int j = 0; j < arrayNew.length - 1; j++) {
arrayNew[j] = arrayNew[j + 1];
}
}
}
return newArray;
// напишите тут ваш код
}
// Метод для сравнения строк: 'а' больше чем 'b'
public static boolean isGreaterThan(String a, String b) {
return a.compareTo(b) > 0;
}
// Переданная строка - это число?
public static boolean isNumber(String s) {
if (s.length() == 0) return false;
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
if ((i != 0 && c == '-') // Строка содержит '-'
|| (!Character.isDigit(c) && c != '-') // или не цифра и не начинается с '-'
|| (chars.length == 1 && c == '-')) // или одиночный '-'
{
return false;
}
}
return true;
}
}