我创建了一个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!");
}
}
}
答案 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();
}