我在互联网上搜索了如何使用此comparator
进行排序,但是其中大多数仅显示了单维数组的示例,该值不是用户输入的。我还没有使用过comparator
。
我尝试了一些在此站点中找到的示例,但是由于我还没有尝试使用比较器,所以导致了我不知道的错误。
UPDATE: The code is finished but there's an error on the output
import java.util.*;
public class OhBoy{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
char userchoice;
String[] org = {"ID","AT","CBT","P"};
String[] orga = {"ID","Arrival Time","CPU Burst Time","Priority"};
String[][] infos = new String[5][4];
//Reminder
System.out.println("***When setting priority 1 is highest and 5 is lowest***");
System.out.println();
System.out.println();
//End user inputs values
for(int a = 0;a<5;a++){
for(int b = 0;b<4;b++){
System.out.print(orga[b]+": ");
infos[a][b] = sc.next();
}
System.out.println();
}
System.out.println();
System.out.println();
System.out.println("--Choose sorting method--");
System.out.println("--------");
System.out.println();
System.out.println("1 - Arrival Time");
System.out.println("2 - CPU Burst Time");
System.out.println("3 - Priority");
System.out.println();
System.out.print("Your choice: ");
userchoice = sc.next().charAt(0);
for(int c = 0;c<4;c++){
System.out.print(org + "\t");
}
System.out.println();
if(userchoice == 1){
Arrays.sort(infos, new SortByArrival());
print(infos);
} else {
}
}
public static void print(String[][] infos){
for (String[] array : infos){
for (String s : array){
System.out.print(s + " ");
}
System.out.println();
}
}
}
class SortByArrival implements Comparator{
public int compare(final Object infoss1, final Object infoss2){
final String f1 = ((String[])infoss1)[1];
final String f2 = ((String[])infoss2)[1];
return f1.compareTo(f2);
}
}
这是尝试打印排序数组时弹出的错误
[Ljava.lang.String;@90f6bfd [Ljava.lang.String;@90f6bfd [Ljava.lang.String;@90f6bfd [Ljava.lang.String;@90f6bfd
答案 0 :(得分:0)
问题在这里:
public int compare(String[][] infoss, String[][] infoss){
该方法接收2个具有相同名称的参数。更改为:
public int compare(String[][] infoss1, String[][] infoss2){