0

2 つの並列配列があります。最初の配列には州名が含まれ、2 番目には州の首都が含まれます。

をランダムに生成しState、ユーザーに州の首都を入力するように求めるクイズを作成しています。入力が受信されたら、メソッドを呼び出して、入力された首都のインデックスが州のインデックスと同じかどうかを確認します。

すなわち:stateArray[0] = "New York"capitalArray[0] = "Albany".

回答方法の確認

 public static void checkAnswer(String[]stateArray, String capitalArray, String answer)
 {
    int index;
    for (int i = 0; i < capitalArray.length; i++){

        if(capitalArray[i].equalsIgnoreCase(answer)){
            index = i;
        }
    }

    if(capitalArray[index] == stateArray[index]) 
        {
            System.out.println("correct");
        }
        else
        {
            System.out.println("incorrect");
        }
    }

if2番目のステートメントが間違っていることは知っています。ユーザーの回答が で見つかったインデックスを使用して、2 つの配列を比較するにはどうすればよいcapitalArrayですか?

4

5 に答える 5

1
boolean checkAnswer(String[] stateArray, String[] capitalArray, String displayedState, String answer) {
    for (int i = 0; i < stateArray.length; i++) {
        if (stateArray[i].equals(displayedState) && capitalArray[i].equals(answer)) {
            return true;
        }
    }
    return false;
}

か何か。重要なのは、表示した状態を表すために何かを渡す必要があるということです。

于 2013-04-05T21:16:16.950 に答える
0

ユーザーに表示される状態を保持するインデックスを追跡する必要があります。たとえば、コードの記述方法により、ユーザーは間違った答えを出して正しい答えを得ることができます。説明として次の例を取り上げます。

string[] stateArray = {"New York", "California"};
string[] capitalArray = {"Albany", "Sacramento"};

質問として「ニューヨーク」を表示し、ユーザーがたまたま「サクラメント」と答えた場合、コードは正しく表示されます。

また、答えが配列内のどの大文字とも一致しない場合も必要です。これをコードに実装する 1 つの方法は、インデックスを -1 に開始することです。

int index = -1;

forループチェックが終了したら、インデックスが-1であるかどうかを確認し、「あなたの答えは有効な状態ではありません」またはそれらの行に沿って何かを表示します。

おそらくHashMapを使用してください。私はJavaに完全に精通していません.Pythonの辞書に似ているようです。ディクショナリ オブジェクトは優れたパフォーマンスを発揮します。

于 2013-04-05T21:22:17.190 に答える
0

質問した状態がわかっているので、その配列インデックスも知っておく必要があります。以下に示すように、両方の配列がクラス変数として宣言されています。

... class Quiz {

private String[] states = new String[50];
private String[] capitals = new String[50];

... method to fill both arrays with the correct data

 public static void checkAnswer(int question, String answer)
 {


    if(capitalArray[question].equalsIgnoreCase(answer)){
        {
            System.out.println("correct");
        }
        else
        {
            System.out.println("incorrect");
        }
   }
}

checkAnswerメソッドの戻り値の型はにしたほうがいいのですBooleanが、そのままにしておきました。

于 2013-04-05T21:28:43.123 に答える
0

配列を返すこの関数を試してください:-

public static String[] numSame (String[] list1, String[] list2) 
     {  
          int same = 0;  
          for (int i = 0; i <= list1.length-1; i++) 
          {  
             for(int j = 0; j <= list2.length-1; j++) 
             {  
                if (list1[i].equals(list2[j])) 
                {  
                    same++;  
                    break;  
                }  
             }  
          }  

          String [] array=new String[same];
          int p=0;
          for (int i = 0; i <= list1.length-1; i++) 
          {  
             for(int j = 0; j <= list2.length-1; j++) 
             {  
                if (list1[i].equals(list2[j])) 
                {  
                    array[p]=  list1[i]+"";
                    System.out.println("array[p] => "+array[p]);
                    p++;
                    break;  
                }  
             }  
          } 
          return array;
       }  
于 2013-08-28T06:00:21.560 に答える