1

私はプログラミングとJavaも初めてです。入力された配列をソートする void メソッドを作成する必要があります。コードを記述しましたが、void メソッドからソートされたリストを表示する方法がわかりません。誰でも喜んでお手伝いします。それは非常に高く評価されます。

package util.assign4;

import java.util.StringTokenizer;
import javax.swing.JOptionPane;
import util.IO;


public class UtilAssign4 {
    public static int[] getData (String input){

        StringTokenizer st = new StringTokenizer(input);
        int []x = new int[st.countTokens()];
        for(int i = 0;st.hasMoreTokens(); i++){
            try{
            x[i] = Integer.parseInt(st.nextToken());
            }
            catch(Exception e){ 
                JOptionPane.showMessageDialog(null," Invalid input");
                System.exit(1);
            }   
         }
        return x;    
    }
    public static int getHighest(int g[]){
        int  hi = g[0];
        for( int k = 1; k <g.length;k++)
            if(g[k]> hi) hi = g[k];

        return hi;
    }
    public static int getSmallest(int p[]){
        int sm = p[0];
        for(int l = 1;l<p.length;l++)
            if(p[l]  < sm) sm = p[l];
        return sm;
    }
    public static float getAverage(int n[]){
        float sum = 0.0f;
        for(int y = 0;y <n.length; y++) sum += n[y];
        return sum/n.length;

    }
    public static void getSorted(int grades []){
        for(int i = 0; i<grades.length-1;i++){
            int largest =i;
            for(int j = 0;j<grades.length;j++)
                if(grades[j]>grades[largest]) largest = j;
            int temp = grades[largest];
            grades[largest] = grades[i];
            grades[i]=temp;  

        }


    }


    public static void main(String[] args) {
       String input = JOptionPane.showInputDialog("Enetr one or more grades:");
       int [] x = getData(input);
       int j = getHighest(x);
       int m = getSmallest(x);
       float a = getAverage(x);



               IO.showMsg("Array you entered:" + input + String.format("\nThe"
                       + " higheset grade is:%2d \n"
                       + "The Lowest Grade is:%2d \n"+"The average is:%2.2f\n"
                       + "The sorted list: ",
                       j,m,a));


    }
}
4

2 に答える 2

2

sortメソッドで配列の内容を出力することは想定されていません。あなたの要件(私は賭けます)は、メソッド「インプレース」に提供された配列をソートすることです(すでに行っているように見えます)。これが意味することは、与えられた配列:

int[] grades = new int[] {34, 76, 12, 0, -1};

あなたが呼び出すとき:

UtilAssign4.getSorted(grades);

メソッドに渡された配列は実際にはメソッドでソートされているため、返す必要はありません (そのため、戻り値の型は void です)。要約すると、並べ替えメソッドを呼び出す前は、配列は並べ替えられていません。呼び出しが完了すると、まったく同じ配列がソートされます。

これで、呼び出し元のメソッドで並べ替えられた配列を出力できます (この場合main(String[]):

getSorted(x); // <-- call the sort function, on your array

String msg = String.format("\nThe higheset grade is:%2d \n"
        + "The Lowest Grade is:%2d \nThe average is:%2.2f\n"
        + "The sorted list: %s", j, m, a, Arrays.toString(x));
IO.showMsg(msg);

Arrays.toString(x)?に注意してください。これにより、ソートされた配列が取得され、文字列表現に変換されます ([76, 34, 12, 0, -1] のようになります)。

于 2013-04-04T04:53:06.633 に答える
0

void メソッドでは、任意のフィールド Array 内の配列を短くします。

 public class UtilAssign4 {
 private Integer[] shorted = new Integer[100];
 public static int[] getData (String input){
 .
 .

}

void メソッドで上記の配列を使用して作業を行い、必要な場所でこれを使用します

于 2013-04-04T04:59:15.003 に答える