Java问题-扫描器输入和If(X==Input)语句
我刚刚通读了与Java扫描器问题相关的七个线程,但没有一个包含我问题的答案 我正在尝试从控制台获取用户输入。我创建一个Scanner对象(输入),然后尝试将用户的命令存储在一个名为“command”的字符串中。然后我将“command”传递回原始的runGame函数。看起来扫描器/命令确实读取了写入文本。(如果我输入“d”,然后打印命令的内容,它将打印“d”。) 但当我返回字符串并将其存储在nextMove中时,它会断开。例如,如果未调用语句,我将输入'd',然后输入(nextMove=='d')。事实上,无论我输入什么,都只输入else语句 我做错了什么?如何修复它 以下是原始功能代码:Java问题-扫描器输入和If(X==Input)语句,java,validation,java.util.scanner,Java,Validation,Java.util.scanner,我刚刚通读了与Java扫描器问题相关的七个线程,但没有一个包含我问题的答案 我正在尝试从控制台获取用户输入。我创建一个Scanner对象(输入),然后尝试将用户的命令存储在一个名为“command”的字符串中。然后我将“command”传递回原始的runGame函数。看起来扫描器/命令确实读取了写入文本。(如果我输入“d”,然后打印命令的内容,它将打印“d”。) 但当我返回字符串并将其存储在nextMove中时,它会断开。例如,如果未调用语句,我将输入'd',然后输入(nextMove=='d'
public void runGame() {
drawWindow();
while(true) {
String nextMove = takeInput();
if(nextMove == "d")
System.out.print("WORRRRDDD d");
else if(nextMove == "w")
System.out.print("WORRRRDDD w ");
else {
drawWindow();
System.out.print("YOU GOT ELSED");
continue;
}
}
}
public String takeInput() {
String command;
input = new Scanner(System.in); // "input" is the Scanner object used for all input.
try{
System.out.print("Enter command (d, w, stop, restart, exit): ");
command = input.next();
} catch(Exception e) {
System.out.println("You entered an invalid command.");
return null;
}
System.out.println("\n RETURNING COMMAND" + command + " \n");
return command;
}
以下是takeInput/Scanner功能代码:
public void runGame() {
drawWindow();
while(true) {
String nextMove = takeInput();
if(nextMove == "d")
System.out.print("WORRRRDDD d");
else if(nextMove == "w")
System.out.print("WORRRRDDD w ");
else {
drawWindow();
System.out.print("YOU GOT ELSED");
continue;
}
}
}
public String takeInput() {
String command;
input = new Scanner(System.in); // "input" is the Scanner object used for all input.
try{
System.out.print("Enter command (d, w, stop, restart, exit): ");
command = input.next();
} catch(Exception e) {
System.out.println("You entered an invalid command.");
return null;
}
System.out.println("\n RETURNING COMMAND" + command + " \n");
return command;
}
在您帮助时(我将搜索,但如果找不到),识别扫描仪对象中空白输入的最佳方法是什么?
对于控制台中的用户输入,是否还有其他需要担心的异常/捕获?如果我记得正确使用了compare、compareTo或equals,则不应使用==进行字符串比较。如果我记得正确使用了compare,比较或等于。而不是使用
=
,使用.equals(字符串)
,因此您的支票如下所示:
if(nextMove.equals("d"))
=
检查变量在内存中是否是完全相同的引用,.equals()
检查两个实例在逻辑上是否相等。而不是使用=
,使用.equals(String)
,因此您的检查如下:
if(nextMove.equals("d"))
=
检查变量是否与内存中的引用完全相同,.equals()
检查两个实例在逻辑上是否相等。您不应该使用“==”方法来比较两个字符串对象。您需要使用.equals()方法
您更改的代码部分应如下所示:
if(nextMove.equals("d"))
System.out.print("WORRRRDDD d");
else if(nextMove.equals("w"))
System.out.print("WORRRRDDD w ");
为什么?引用自
“==”运算符比较两个对象
以查看它们是否引用
同样的例子。它检查
两个对象是否完全相同
不管是不是同一个物体。可能需要两个字符串
不同的对象,但可以具有
相同的值(具有完全相同的
其中的字符)。在这种情况下,,
“==”将返回false
比较时要特别小心
物体。如果你想知道
那么,两个对象是否相同
使用“==”,或使用equal()查看
它们具有相同的价值
请同时查看以下链接:
您不应该使用“==”方法来比较两个字符串对象。您需要使用.equals()方法
您更改的代码部分应如下所示:
if(nextMove.equals("d"))
System.out.print("WORRRRDDD d");
else if(nextMove.equals("w"))
System.out.print("WORRRRDDD w ");
为什么?引用自
“==”运算符比较两个对象
以查看它们是否引用
同样的例子。它检查
两个对象是否完全相同
不管是不是同一个物体。可能需要两个字符串
不同的对象,但可以具有
相同的值(具有完全相同的
其中的字符)。在这种情况下,,
“==”将返回false
比较时要特别小心
物体。如果你想知道
那么,两个对象是否相同
使用“==”,或使用equal()查看
它们具有相同的价值
请同时查看以下链接:
正如其他人所说,在检查字符串之间是否相等时使用.equals 此外,当你在等式检查中有一个常数时,你应该把它放在第一位。e、 g
"abc".equals(someString);
这将永远只是一个布尔值。鉴于:
someString.equals("abc");
这可以是布尔值,也可以抛出NullPointerException。正如其他人所说,在检查字符串之间的相等性时使用.equals 此外,当你在等式检查中有一个常数时,你应该把它放在第一位。e、 g
"abc".equals(someString);
这将永远只是一个布尔值。鉴于:
someString.equals("abc");
这可能是一个布尔值或抛出一个NullPointerException。我可能错了,但我不认为java字符串语句是用==等一下,因为我需要使用.equals()不是吗?我可能错了,但我不认为java字符串语句是用==等一下,因为我需要使用.equals()不是吗?