0

少し助けが必要な配列プロジェクトがあります。ほとんどの作業は完了しましたが、最後にいくつかの問題が発生しました。生徒の名前、成績を入力し、成績を (名前とともに) 並べ替えて、降順に印刷することができます。Doubles として設定されたグレードが必要ですが、現在は Ints としてスタックしています。Int のインスタンスを Double に変更しようとしましたが、不一致エラーが発生します。私もそれを設定しているので、最初に配列のサイズを入力しますが、「生徒数」を2回求められます。これを修正して、1 回だけ質問するか、両方の回答に対して 1 つの入力を行うにはどうすればよいですか。これがコードです。

import java.util.Scanner;

public class Grades {

    public static void main(String[]args){

        {
            Scanner GradeIn = new Scanner(System.in);
            Scanner NameIn = new Scanner(System.in);
            System.out.print( "How many students are there? " );
            int[]GradeArray = new int[GradeIn.nextInt()];
            String[]nameArray = new String[GradeIn.nextInt()];

            for( int i=0 ; i<GradeArray.length ; i++ ) 
            {
                System.out.println( "Enter Grade for Student " + (i+1) + ": " );
                GradeArray[i] = GradeIn.nextInt();
                System.out.println( "Enter Name of Student " + (i+1) + ": " );
                nameArray[i] = NameIn.nextLine();
            }

            bubbleSort(GradeArray, nameArray);


            for (int i = 0; i<GradeArray.length; i++)
            {
                System.out.print(nameArray[i]);
                System.out.print(": ");
                System.out.print(GradeArray[i] + "   ");

            }
        }
    }

    private static void bubbleSort(int[]GradeArray, String[] nameArray){

        int n = GradeArray.length;
        int temp = 0;
        String temp2;

        for(int i=0; i<n; i++){
            for(int j=1; j<(n-i);j++){

                if(GradeArray[j-1]<GradeArray[j]){
                    //swap
                    temp=GradeArray[j-1];
                    GradeArray[j-1]=GradeArray[j];
                    GradeArray[j]=temp;

                    temp2=nameArray[j-1];
                    nameArray[j-1]=nameArray[j];
                    nameArray[j]=temp2;


                }
            }
        }
    }
}

どんな助けでも大歓迎です。

4

1 に答える 1

0

私が見る限り、次の行を置き換える必要があります。

int[]GradeArray = new int[GradeIn.nextInt()];
GradeArray[i] = GradeIn.nextInt();
private static void bubbleSort(int[]GradeArray, String[] nameArray){

と:

double[]GradeArray = new double[GradeIn.nextInt()];
GradeArray[i] = GradeIn.nextDouble();
private static void bubbleSort(double[]GradeArray, String[] nameArray){

それらを交換しても機能しない場合は、変更方法を投稿することも役立つ場合があります。

生徒数を2回求める場合は、次のように変更します。

int[]GradeArray = new int[GradeIn.nextInt()];
String[]nameArray = new String[GradeIn.nextInt()];

に:

int count = GradeIn.nextInt();
int[]GradeArray = new int[count];
String[]nameArray = new String[count];
于 2012-11-29T07:50:00.323 に答える