Array Out of Bounds问题

时间:2012-11-15 23:39:45

标签: java arrays string split indexoutofboundsexception

我有一个非常简单的程序,只有一个文本框和一个按钮。

告知用户将两种颜色的名称放在框中,用空格分隔。

例如“红绿” 输出将在屏幕上打印,“苹果是红色的,有绿点。”

然而,当屏幕上只输入一个单词时,我需要它才能运行。我正在使用一个包含拆分字符串的数组。当我只输入红色时,我收到此错误。

“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.");
                }

3 个答案:

答案 0 :(得分: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.");
}

答案 1 :(得分:2)

您可以使用警卫if声明附上您的打印逻辑:

if (userInputSplit.length > 1) {
  String wordOne = userInputSplit[0];
  String wordTwo = userInputSplit[1];
  ...
}

答案 2 :(得分: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...
}

这只是另一种看问题的方式......