【问题标题】:String array not working with .equals字符串数组不适用于 .equals
【发布时间】:2017-12-21 13:06:30
【问题描述】:

我正在使用 Swing 制作一个刽子手游戏,并且正在研究检查用户输入的值是否在单词中的部分。我已将单词的每个字母放入一个数组中。但是,当我输入一个我知道在数组中的字母时,它会输出它不是字母。使用 .contains 会创建一条错误消息。

与以下问题相关的代码。

private void checkcorrect() {
    for (int i = 0; i < word.length(); i++) {
        System.out.println(i);
        if(wordch[i].equals(inputString)) {
            System.out.println("Success");
            letter = true;
        }
    }

    if(letter==true) {
        System.out.println("Was a letter");
    }else {
        System.out.println("Not a letter");
    }
}

private class TextFieldListener implements ActionListener{  
    public void actionPerformed(ActionEvent evt){ 
        String inputString = userInput.getText();
        userInput.setText("");
        System.out.println(inputString );
        checkcorrect();
    }
}

【问题讨论】:

  • Eclipse 只是你的开发环境,这是一道 Java 编程语言题。
  • 对于您的方法,它看起来是正确的,但是我看不到 inputString 如何从您的 ActionListener 到您的 checkcorrect() 方法。您还应该查看String.contains() 以获得更简单的方法。
  • 另外,我们不知道 wordch 是什么。发布一个完整的最小示例来重现问题。
  • 如果您希望人们尝试阅读,请正确缩进您的代码。
  • 添加您的解决方案,我们不知道某些部分是什么。同时发布您的输出

标签: java arrays string nullpointerexception equals


【解决方案1】:

试试“.contains”

    String word = "test";
    String[] letter = { "t"};
    boolean hasTheLetter = word.contains(letter[0]);
    System.out.println(hasTheLetter);

【讨论】:

  • 感谢您的提示,但当我尝试此操作时,它会创建一条错误消息,我在 java.lang.String.contains(String. java:2133) 在 HangMan.Test.checkcorrect(Test.java:101)
  • 问题中发布此类异常输出作为编辑。
【解决方案2】:

您也可以使用 indexOf > 0 进行检查。

String word = "abcdef";
String[] letter = {"d"};

boolean foundLetter = (word.indexOf(letter[0]) > 0);
if (foundLetter)
    // something

如果你得到一个空指针,这意味着你正在访问一个不存在/尚未声明的变量。

【讨论】:

    猜你喜欢
    • 2014-07-13
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    相关资源
    最近更新 更多