1

1つのテキストボックスとボタンを備えた非常にシンプルなプログラムがあります。

ユーザーは、スペースで区切られた2色の名前をボックスに入れるように指示されます。

例:「赤緑」出力は画面に「リンゴは赤で緑の点が付いています。」と印刷されます。

ただし、画面に単語が1つしか入力されていない場合に機能する必要があります。分割された文字列を保持する配列を使用しています。赤だけを入力すると、このエラーが発生します。

"AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException:

コードは次のとおりです。

String userInput = textField.getText();
String[] userInputSplit = userInput.split(" ");
String wordOne = userInputSplit[0];
String wordTwo = userInputSplit[1];
if (wordTwo !=null){
                System.out.println("The apple is " + wordOne + " with " + wordTwo + " dots.");
                } else {
                 System.out.println("The apple is " + wordOne + " with no colored dots.");
                }
4

3 に答える 3

2

このような簡単なことをすることができます:

String wordOne = userInputSplit[0];
String wordTwo = null;
if (userInputSplit.length > 1){
    //This line will throw an error if you try to access something 
    //outside the bounds of the array
    wordTwo = userInputSplit[1];  
}
if (wordTwo !=null) {
    System.out.println("The apple is " + wordOne + " with " + wordTwo + " dots.");
} 
else {
    System.out.println("The apple is " + wordOne + " with no colored dots.");
}
于 2012-11-15T23:41:44.677 に答える
2

if印刷ロジックをガードステートメントで囲むことができます。

if (userInputSplit.length > 1) {
  String wordOne = userInputSplit[0];
  String wordTwo = userInputSplit[1];
  ...
}
于 2012-11-15T23:41:53.197 に答える
2

事前条件チェックを実行して、ユーザーからの入力にスペースが含まれているかどうかを確認することもできます...

String userInput = textField.getText();
userInput = userInput.trim(); // Remove any leading/trailing spaces
if (userInput != null && userInput.length() > 0) {
    StringBuilder msg = new StringBuilder(64);
    if (userInput.contains(" ")) {
        String[] userInputSplit = userInput.split(" ");
        String wordOne = userInputSplit[0];
        String wordTwo = userInputSplit[1];
        msg.append("The apple is ").append(wordOne);
        msg.append(" with ").append(wordTwo).append(" dots");
    } else {
        msg.append("The apple is ").append(userInput).append(" with no colored dots.");
    }
    System.out.println(msg);
} else {
    // No input condition...
}

それは問題を見る別の方法です...

于 2012-11-15T23:56:26.390 に答える