java如何在2d数组上使用比较器对用户输入进行排序
我在互联网上搜索了如何使用这个comparator
进行排序,但大多数都只显示了一维数组的示例,并且值不是用户输入的。我还从来没有用过这个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
# 1 楼答案
问题在于:
该方法接收两个同名参数。将其更改为: