The output data are correct, but I can not meet requirements. Does anybody know where I made the mistakes?
package pl.codegym.task.task09.task0930;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
/*
Zadanie z algorytmami
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> lista = new ArrayList<String>();
while (true) {
String s = reader.readLine();
if (s.isEmpty()) {
break;
}
lista.add(s);
}
String[] tablica = lista.toArray(new String[lista.size()]);
sortuj(tablica);
for (String x : tablica) {
System.out.println(x);
}
}
public static void sortuj(String[] tablica) {
// tutaj wpisz swój kod
// boolean[] czyLiczba = new boolean[tablica.length];
int liczbaSlow = 0;
for(int i = 0; i<tablica.length;i++){
// czyLiczba[i] = isLiczba(tablica[i]);
if(isLiczba(tablica[i])){
liczbaSlow++;
}
}
String[] tablicaOwocow = new String[liczbaSlow];
int[] tablicaLiczb = new int[tablica.length-liczbaSlow];
int licznikO = 0;
int licznikS =0;
for(int i = 0 ; i < tablica.length ; i++){
if(isLiczba(tablica[i])){
tablicaLiczb[licznikO++] = Integer.parseInt(tablica[i]);
}else {
tablicaOwocow[licznikS++] = tablica[i];
}
}
//sortowanie tablicy owoców;
for(int i =0 ; i<tablicaOwocow.length-1; i++){
for(int j = 0 ; j< tablicaOwocow.length-1-i; j++ ){
if(isWiekszeOd(tablicaOwocow[j],tablicaOwocow[j+1])){
String temp = tablicaOwocow[j];
tablicaOwocow[j] = tablicaOwocow[j+1];
tablicaOwocow[j+1] = temp;
}
}
}
//sortowanie tablicy numerow;
for(int i =0 ; i<tablicaLiczb.length-1; i++){
for(int j = 0 ; j< tablicaLiczb.length-1-i; j++ ){
if(tablicaLiczb[j]<tablicaLiczb[j+1]){
int temp = tablicaLiczb[j];
tablicaLiczb[j] = tablicaLiczb[j+1];
tablicaLiczb[j+1] = temp;
}
}
}
int licznikNumerow = 0;
int licznikSlow =0;
//wstawianie posortowanych Oowcow i liczb (malejaco);
for(int i = 0; i <tablica.length ; i++){
if ( isLiczba(tablica[i])) {
tablica[i] = String.valueOf(tablicaLiczb[licznikNumerow]);
licznikNumerow++;
}else {
tablica[i] = tablicaOwocow[licznikSlow];
licznikSlow++;
}
}
}
// Metoda porównywania ciągów: 'a' jest większe niż 'b'
public static boolean isWiekszeOd(String a, String b) {
return a.compareTo(b) > 0;
}
// Czy przekazywany ciąg jest liczbą?
public static boolean isLiczba(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 == '-') { // Ciąg zawiera łącznik
return false;
}
if (!Character.isDigit(c) && c != '-') { // lub nie jest liczbą i nie zaczyna się łącznikiem
return false;
}
if (i == 0 && c == '-' && chars.length == 1) { // lub jest pojedynczym łącznikiem
return false;
}
}
return true;
}
}