如何修复请求程序的单词?

时间:2014-09-08 01:03:24

标签: java

我创建了一个JAVA代码,我没有任何错误,但是当我运行代码时,输​​出执行此操作: 输入一个字:谢谢你输入一个字!它不允许我输入任何内容,当我打算让代码输入一个单词时,它会检查它是否是一个单词,如果它是单词则给出答案,如果不是,则给出答案。 (这是我第一次在这个网站上询问)这是代码:

package files;
import java.util.Scanner;
public class Testprinter {

static boolean myBoolean = false;   
static Scanner userInput = new Scanner(System.in);


public static void main(String[] args){
    String usersInput;

    while(myBoolean != true)
    {   
    System.out.print("Enter a word: ");

    usersInput = userInput.toString();
    myBoolean = checkInput(usersInput);
    }

    checkifComplete();

}

public static boolean checkInput(String usersInput){
    if(usersInput == (String)usersInput)
    {
        return true;

    } else { return false; }

}
public static void checkifComplete(){
    if(myBoolean = true){
        System.out.print("Thank you for entering a word!");

    }

}


}

3 个答案:

答案 0 :(得分:2)

这一行错了:

if (usersInput == (String)usersInput)

应该是:

if (usersInput.equals(usersInput))

在Java中,字符串(以及通常:所有对象,即所有非原始类型)必须使用equals()方法进行比较,测试相等==运算符适用于测试基本类型之间的相等性,但对于它测试标识的对象 - 一个不同的概念,99%的时间,而不是你想要的。

此外,你正在比较一个字符串本身!它总是会返回true,我很确定这不是你想要做的...请注意参数必须有不同的名称,目前它的名称就像属性一样。也许这就是你的意思?

public static boolean checkInput(String input) {
    return usersInput.equals(input);
}

答案 1 :(得分:2)

你忘记scanner.nextLine();这是因为它没有要求你输入任何内容。
而不是usersInput = userInput.toString();
使用:

  String  usersInputStr = scanner.nextLine();

请点击此链接 - 了解如何使用扫描仪:How can I read input from the console using the Scanner class in Java?

答案 2 :(得分:0)

当您使用userinput.toString()时,您的问题正在使用usersInput = userInput.next();。您当前正在检索扫描仪的字符串表示形式,而不是单词。

更正主要内容:

public static void main(String[] args){
    String usersInput;

    while(myBoolean != true)
    {   
    System.out.print("Enter a word: ");

    usersInput = userInput.next();
    myBoolean = checkInput(usersInput);
    }

    checkifComplete();

}