0

/* * (生徒の並べ替え) 生徒の数、生徒の名前、および点数を入力するようユーザーに促し、生徒の名前を点数の降順で出力するプログラムを作成します。*/

package homework6_17;

import java.util.Scanner;

public class Homework6_17 {
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("Enter number of students: ");
    int numberOfStudents = input.nextInt();
    String[] names = new String[numberOfStudents];
    for (int i = 0; i < numberOfStudents; i++) {
        System.out.println("Enter the name of student: ");            
        names[i] = input.nextLine();

    }
    double[] scores = new double[numberOfStudents];
    for (int i = 0; i < numberOfStudents; i++) {
        System.out.println("Enter the score of student: ");            
        scores[i] = input.nextDouble();
    }

    String temps = "";
    double temp = 0;
    double max = scores[0];
    for(int i = 0; i<(scores.length-1); i++){
        if(scores[i+1]>scores[i]){
             temp=scores[i+1];
            scores[i]=scores[i+1];
            scores[i+1]=scores[i];

            temps = names[i+1];
            names[i]=names[i+1];
            names[i+1]=names[i];
        }
    }
    for(int i = 0 ; i<(scores.length-1); i++)
        System.out.println(names[i]+ " " + scores[i]);        


}
}

このプログラムを実行すると; 走る:

生徒数を入力してください: 3

生徒の名前を入力してください: 生徒の名前を入力してください: a

学生の名前を入力してください: b

生徒の点数を入力してください: c

Exception in thread "main" java.util.InputMismatchException

// 「生徒の名前を入力してください:」が 1 回ではなく 2 回表示されました。

4

3 に答える 3

0

すべての生徒のループでSystem.out.print("Enter number of students: ");フレーズを印刷しているため、最初のフレーズを削除するだけです。forしたがって、最初の生徒のために 2 回印刷しています (ループの前に 1 回、ループ内で 1 回)。

于 2013-10-30T13:12:09.413 に答える
0

最初に頭に浮かぶこと (ここで正しいかどうかはわかりません) は、生徒の数を入力して「Enter」を押すことです。最初の int (3) を読み取り、最初の生徒の最初の入力として "enter" を読み取ります。

たぶん試してみてくださいint numberOfStudents = Integer.ParseInt(input.nextLine());?そうすれば、改行が学生に追加されません。

于 2013-10-30T13:15:58.247 に答える
0

SOで宿題の質問に答えるのは良い考えではありません。しかし、いくつかのコードを試したので、Q に答えても問題ありません。

import java.util.Scanner;

public class Homework6_17 {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.print("Enter number of students: ");
        int numberOfStudents = input.nextInt();
        String[] names = new String[numberOfStudents];

        for (int i = 0; i < numberOfStudents; i++) {
            System.out.println("Enter the name of student #" + (i + 1) + ":");
            names[i] = input.next();
        }

        double[] scores = new double[numberOfStudents];
        for (int i = 0; i < numberOfStudents; i++) {
            System.out.println("Enter the score of student " + names[i] + ":");
            scores[i] = input.nextDouble();
        }

        String tempName;
        double tempScore;
        for (int i = 0; i < numberOfStudents; i++) {
            for (int k = i + 1; k < numberOfStudents; k++) {
                if (scores[k] > scores[i]) {
                    tempName = names[i];
                    tempScore = scores[i];
                    names[i] = names[k];
                    scores[i] = scores[k];
                    names[k] = tempName;
                    scores[k] = tempScore;
                }
            }
        }

        for (int i = 0; i < numberOfStudents; i++)
            System.out.println(names[i] + " " + scores[i]);

    }
}
于 2013-10-30T13:43:37.587 に答える