0

テストすると、うまくビルドされます。しかし、それを実行すると、イントロとユーザー出力の質問のみが表示されます (これが本来の動作です) が、回答を入力するとエラーが表示されます:

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 50
    at statecapitals.StateCapitals.main(StateCapitals.java:141)

今、私はこれに慣れていないことを知っていますが、エラーだと思うのは、配列が対応しておらず、何が間違っていたのかわからないということです。どんな助けでも大歓迎です。ここに私が持っているものがあります:

    String[] stateName = new String[50];
    String[] capName = new String[50];

    int i;
    for(i=0; i < 50; i++)
    {
    stateName[0] = "Alabama";
    stateName[1] = "Alaska";
    .....
    capName[0] = "Montgomery";
    capName[1] = "Juneau";
    .....
    }

    boolean found = false;

    Scanner keyboard = new Scanner(System.in);
    System.out.println("This program is designed...");
    System.out.println("Please enter the name of a U.S. state (please enter capitalized):");
    stateName[i] = keyboard.nextLine();

    for(i=0; (!found) && (i < stateName.lenth); i++)
      if(stateName[i].matches(capName[i]) )
      System.out.print(The capital of " + stateName + " is " + capName);
      found = true;
        if(!found)
        System.out.println("The name you entered was not on the list.");

*更新および編集: 最も問題があったコード行は次のとおりです。

    stateName[i] = keyboard.nextLine();

みんなの助けに感謝します、私はいくつかの変更を加えました:

    int i;
    for(i=0; i < 49; i++)
    {
    stateName[i+1]
    .....
    capName[i+1]
    ...
    }

さらに、一番下の for ループに中かっこを追加しました。実行すると、次の行で停止します。

    if(capName[i].matches(stateName[i]) )

今回のエラーは次のとおりです。

    Exception in thread "main" java.lang.NullPointerException
    at statecapitals.StateCapitals.main(StateCapitals.java:146)

改めまして、皆様のご意見をお寄せいただきありがとうございます。

4

3 に答える 3

0

私が実装しようとするコードを改善するための良い提案がたくさんありました。

エラーの理由は for ループです。

for(i=0; (!found) && (i < stateName.lenth); i++)

配列の長さは 50 を返しますが、インデックスは 0 ~ 49 になり、一致するものが見つからないため、ループ全体を通過します。

于 2013-10-23T13:30:08.093 に答える