簡體   English   中英

如何在java中按列(升序)對2D數組進行排序

[英]How to sort 2D array according to column wise(ascending order) in java

我想按列順序(升序)對數組進行排序。方法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

似乎問題出在compareString(String str1,String str2)方法的實現中。 當您使用String.compareTo(String)函數時,它會通過將兩個字符串轉換為要比較的Unicode值來比較這兩個字符串。 甚至sortByRollNum()函數在所有情況下都不起作用,它確實很幸運。

我的建議是,因為您要比較滾動數和百分比,解析整數值並進行比較。 您可以使用Integer.parseInt(String)執行此操作,但字符串必須僅包含數值。

關於compareTo: https//beginnersbook.com/2013/12/java-string-compareto-method-example/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM