Polecenie: https://szkopul.edu.pl/problemset/problem/tel/site/?key=statement
cały czas, kiedy dodaje opcje: " Float.compare(p1, p2)==0" w 38 wierszu, wyrzuca mi blad, nie mam pojecia dlaczego, bez tego dziala, ale jest blad w sortowaniu, poniewaz telefony o takiej samej dlugosci i takich samcyh przekatncyh powinny byc wypisane w tej samej kolejnosci, a metoda sortowanie mi ja zmienia.
package oki;
import java.util.Scanner;
public class Salon_Telefanatic {
static String telefony[];
static int n;
public static void main(String[] args) {
//wczytanie
System.out.println("Wczytaj n:");
n = new Scanner(System.in).nextInt();
telefony = new String [n];
for(int i=0; i<n; i++) {
System.out.println(i+1+". telefon");
telefony[i]= new Scanner(System.in).nextLine();
}
for(int i=0; i<n; i++) {
System.out.println(i+1+". telefon: "+telefony[i]);
}
sortowanie(telefony, 0, telefony.length-1);
System.out.println("-----------");
for(int i=0; i<n; i++) {
System.out.println(i+1+". telefon: "+telefony[i]);
}
}
//metoda sprawdzenia ktory telefon powinien byc wczesniej
public static boolean ktory_tel_wczesniej(String dlugosc_nazwy, Float p1, String dlugosc_nazwy2, Float p2) {
if(dlugosc_nazwy.length()<dlugosc_nazwy2.length()) {
return true;
}
else if(dlugosc_nazwy.length()==dlugosc_nazwy2.length()) {
if(Float.compare(p1, p2)==-1 || Float.compare(p1, p2)==0) {
return true;
}
else {
return false;
}
}
else return false;
}
public static String nazwa(String a) {
String wynik="";
int spacja=0;
for(int i=0; i<a.length(); i++) {
if(a.charAt(i)==' ') spacja++;
if(spacja==2) break;
else wynik=wynik+a.charAt(i);
}
return wynik;
}
public static float przekatne(String a) {
String y = "";
String x = "";
int spacja=0;
for(int i=0; i<a.length()-1; i++) {
if(a.charAt(i)==' ') spacja++;
if(spacja==2) x=x+a.charAt(i);
else if(spacja==3) y=y+a.charAt(i+1);
}
return (float) (Float.parseFloat(y)/Float.parseFloat(x));
}
public static void sortowanie(String tablica[], int begin, int end) {
int i, j;
String v, temp;
i=begin;
j=end;
v=tablica[(begin+end)/2];
do {
while(ktory_tel_wczesniej(nazwa(tablica[i]),przekatne(tablica[i]), nazwa(v),przekatne(v))) i++;
while(ktory_tel_wczesniej(nazwa(v),przekatne(v),nazwa(tablica[j]),przekatne(tablica[j]))) j--;
if(i<=j) {
temp = tablica[i];
tablica[i] = tablica[j];
tablica[j] = temp;
i++;
j--;
}
}
while(i<=j);
if(begin<j) sortowanie(tablica, begin,j);
if(i<end) sortowanie(tablica, i, end);
}
}