1

これは宿題です。私は配列を操作しようとしていますが、これはそれらを操作する最初のプロジェクトです。私の本にはあらゆる種類の例が示されていますが、それらが例をコーディングする方法は、割り当てが要求するものを正当化するものではありません。

ユーザーに学生をシステムに入力するように求めるプログラムを作成しようとしています。プログラムは最初に入力する数を尋ね、次に名前、姓、およびスコアを入力するように求めます。

このコード セクションで達成しようとしているのは、何人の学生が入学するかをユーザーに尋ねることです。と言うコード行

    getStudentCount();

その情報を収集し、studentCount を返すメソッドです。

配列の長さがユーザーが入力する数値になるようにこれをコーディングしようとしましたが、うまくいかないので、ガイダンスを求めたいと思いました。理想的には、これが機能し、ユーザーが 3 を入力すると、情報を 3 回入力するように求められます。ユーザーが 0 を入力すると、プログラムは何も尋ねません。

    public static void main(String[] args)
{

    System.out.println("Welcome to the Student Scores Application.");

    int studentCount = 1;

    getStudentCount();
    studentCount = sc.nextInt();

    String [] students = new String[studentCount];
    for (int i = 0; i < students.length; i++)
    {

        Student s = new Student();
        String firstName = getString("Enter first name: ");
        s.setFirstName(firstName);

        String lastName = getString("Enter last name: ");
        s.setLastName(lastName);

        int score = getScore("Enter score: ");
        s.setScore(score);


    }

}

コードを作成しようとするまで、プログラムにあったものはすべてうまくいきました

    String [] students = new String[studentCount];
    for (int i = 0; i < students.length; i++)

これは、私がこれを行っている方法に問題があることを示しています。

また、割り当てでは、情報を配列に保存するように求められます。私はそれを呼び出す方法がはっきりしていないか、それを保存していると思います.... セッターとゲッターを持つ別のクラスがあります。保存するのに十分ですか?どのように呼びますか?繰り返しますが、これは宿題なので、どんな指導も大歓迎です。ありがとう!

4

4 に答える 4

4

これは、少なくとも質問者側の作業を示す宿題の例です (そしてうまく書かれています)。

studentCount を 1 に設定してから を呼び出しますgetStudentcount()が、戻り値を変数に割り当てることはありません。そのため、変数は 1 のままです (ただし、後で上書きすることになりますsc.nextInt()が、既に適切なメソッドがある場合は、これはおそらく必要なものではありません)。 )。修正は、メソッドの戻り値を変数 [1] に代入するだけです。

[1] はい、宿題の質問に完全に答えるべきではないことはわかっていますが、部分的にしか答える方法がまったくありませんでした - 提案は歓迎します :)

于 2012-04-04T00:29:19.713 に答える
3

私のヒント:

  1. 学生数を取得する方法と、それをどこに置くかを注意深く見てください。2 つの異なる方法でカウントを取得しているようですが、これはせいぜい冗長であり、おそらくバグです。

  2. おそらくスタックトレースがあります。それを読んで!!

    スタック トレースは、スローされた例外、その診断メッセージ、スローされた場所、問題が発生したときにコード内のどこで実行されていたかを示します。

  3. 何が起こっているのかを視覚化するのが難しい場合は、Java IDE のデバッガーを使用して、プログラムを 1 ステップ実行してください。


フォローアップ コメントに基づくと、スタック トレースはありません。しかし、もしあれば、それを読むべきです:-)

于 2012-04-04T00:34:49.260 に答える
0

私はあなたのセリフを理解していません

getStudentCount();
studentCount = sc.nextInt();

getStudentCount() が入力した数値を「返す」場合 (テキストで説明したように)、そうする必要があるようです

int studentCOunt = getStudentCount();
于 2012-04-04T00:32:16.343 に答える
0

宿題を完全にやろうとしているわけではありませんが、以下のコードを見て、これを行う方法を垣間見ることができます。

    /* Some Declarations You're Going to Need */
private static Scanner scan = new Scanner(System.in); //Private, only need it in here
public static Student[] students; //Public, access it from any class you may need

public static void main(String[] args) {
    System.out.println("Welcome to the Student Scores Application.");
    System.out.print("Amount of students:");
    int studentCount = scan.nextInt();
    students = new Student[studentCount];
    for (int i = 0; i < students.length; i++) {
        students[i] = new Student();

        System.out.print("Enter first name:");
        String firstName = scan.next();
        students[i].setFirstName(firstName);

        System.out.print("Enter last name:");
        String lastName = scan.next();
        students[i].setLastName(lastName);

        System.out.print("Enter score:");
        int score = scan.nextInt();
        students[i].setScore(score);
    }
    scan = null; //Done with scanner
}
于 2012-04-04T01:02:36.563 に答える