2

こんにちはみんな簡単な質問。以下のJavaメニューを作成するのは、コードのサンプルです。「if」ステートメントで2つの配列を設定した場合、これらの配列を再度参照するにはどうすればよいでしょうか。スコープが原因で、ifステートメントから移動すると配列が破棄されることを私は知っています。オプションPが選択されている場合は、配列を再度参照したいと思いました。

public static void determineOption (char option) {

        if (option == 'A') {

        int class_number = Console.getInt("Enter how many students between 1-10");

        while (class_number < 1 || class_number > 10)
        class_number = Console.getInt("Enter how many students between 1-10");

        System.out.println("");


        String[] name = new String[class_number];
        int[] score = new int[name.length];

        for (int i=0; i<class_number; i=i+1) 
        {
            name[i] = Console.getString("Enter Name");
            score[i] = Console.getInt("Enter score");
        }

        }
        else if (option == 'P') {


        }
4

4 に答える 4

1

あなたの論理によれば、HashMapはこれに適しているようです。

HashMap<String,Integer>

あなたの鍵は名前であり、価値はスコアです。これをクラス変数として定義し、そうでない場合は両方で使用できます。

于 2012-12-07T17:59:45.167 に答える
0

宣言をスコープの上位に配置します。必要に応じて、クラスの上位に配置します。つまり、配列をメソッドに対してローカルな変数からクラス上の変数に変更します。

于 2012-12-07T17:51:34.263 に答える
0

ifその配列をブロックの外側で宣言し、必要に応じて初期化します。

于 2012-12-07T17:52:44.317 に答える
0

それはすべてスコープの問題です。ステートメントの外側で配列を宣言してif、メソッド自体のスコープに配置します。これにより、メソッド全体(宣言行からメソッドの最後まで)で配列を使用できるようになります。さまざまなメソッドの中で配列を使用する必要がある場合は、クラスフィールドにすることで、その配列をもう少し長く保持する必要があります。

アレイの初期化がさまざまな条件に依存している場合は、アレイがまだ初期化されていない可能性があるため、使用する前にチェックを行う必要があることに注意してください。

于 2012-12-07T17:54:25.283 に答える