【发布时间】:2019-09-09 12:15:04
【问题描述】:
我想按列(升序)对数组进行排序。方法 sortByrollNum 工作正常。但是在第二种方法 sortByPer 中,最高数字打印在顶部。它应该像第一种方法一样按升序打印。我尝试了很多。有人可以帮我解决它吗?
public static int compareStrings(String str1,String str2){
int check=str1.compareTo(str2);
return check;
}//RollNumCheck
public static void sortByRollNum(String [] [] arr,int currentSize){
String minName=arr[0][0];
String minRollNum=arr[0][1];
String minPer=arr[0][2];
for(int j=0;j<arr.length-1;j++){
for(int i=0;i<arr.length-j-1;i++){
int check=compareStrings(arr[i][1], arr[i+1][1]);
if(check>0){
minName=arr[i+1][0];
minRollNum=arr[i+1][1];
minPer=arr[i+1][2];
arr[i+1][0]=arr[i][0];
arr[i+1][1]=arr[i][1];
arr[i+1][2]=arr[i][2];
arr[i][0]=minName;
arr[i][1]=minRollNum;
arr[i][2]=minPer;
}//if
}//for
}//for
System.out.print("\nSorted Array according to Roll Number.\n");
printArray(arr);
}//sortByRollNum
public static void sortByPer(String [] [] arr,int currentSize){
String minName=arr[0][0];
String minRollNum=arr[0][1];
String minPer=arr[0][2];
for(int j=0;j<arr.length-1;j++){
for(int i=0;i<arr.length-j-1;i++){
int check=compareStrings(arr[i][2], arr[i+1][2]);
if(check>0){
minName=arr[i+1][0];
minRollNum=arr[i+1][1];
minPer=arr[i+1][2];
arr[i+1][0]=arr[i][0];
arr[i+1][1]=arr[i][1];
arr[i+1][2]=arr[i][2];
arr[i][0]=minName;
arr[i][1]=minRollNum;
arr[i][2]=minPer;
}//if
}//for
}//for
System.out.print("\nSorted Array according to Percentage.\n");
printArray(arr);
}//sortByPer
【问题讨论】:
-
为什么数组排序不适合你?
Arrays.sort(testdatset, new Comparator<String[]>() { @Override public int compare(String[] o1, String[] o2) { return o1[1].compareTo(o2[1]); } });
标签: java string sorting multidimensional-array