Java 为什么它会跳过While循环中的If语句?它会打印出;“没有工作”;,为什么?
这是节目Java 为什么它会跳过While循环中的If语句?它会打印出;“没有工作”;,为什么?,java,Java,这是节目 import java.util.Scanner; //imports class public class blank2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); boolean valid = true; String ans; ans = in.next(); //answer is a string 如果您
import java.util.Scanner; //imports class
public class blank2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
boolean valid = true;
String ans;
ans = in.next(); //answer is a string
如果您键入“y”,它将直接转到else语句
while (valid == true)
{
它总是跳过这句话
if (ans == "y")
{
System.out.println("it works");
valid = false;
{
else
{
System.out.println("no work");
valid = false;
{
}
}
}
它就是不起作用
if (ans == "y")
不要将字符串与=
进行比较。比较对象引用(相同字符串)的。使用:
相反。它将比较字符串是否相等(检查它们是否与同一个相同)。我不使用answer.equals(“y”)
,因为如果answer
因任何原因为空,则可能出现空指针异常
不要将字符串与=
进行比较。比较对象引用(相同字符串)的。使用:
相反。它将比较字符串是否相等(检查它们是否与同一个相同)。我不使用
answer.equals(“y”)
,因为如果answer
因任何原因为空,则可能会出现空指针异常。在字符串中,不要使用==,可以改为使用compareTo
if ("y".comprateTo(answer))
使用此方法,您可以检查它们是否相同,或者一个是否大于另一个
如果您有问题请告知我们,不要使用==,您可以使用
compareTo
if ("y".comprateTo(answer))
使用此方法,您可以检查它们是否相同,或者一个是否大于另一个
如果您有疑问,请告知我们代码会产生类型不匹配。你可以使用
if(“y”.comprateTo(答案)==0)
但是if(“y”.equals(答案))
更直观,可能更快。是的,这是真的。equals
已经在这里了,我只是给了@user2892492将来的其他选项。@X-Pippes我认为compareTo在开始排序之前没有多大用处。代码会产生类型不匹配。你可以使用if(“y”.comprateTo(答案)==0)
但是if(“y”.equals(答案))
更直观,可能更快。是的,这是真的。equals
已经在这里了,我只是给了@user2892492将来的其他选项。@X-Pippes我认为在开始排序之前,compareTo没有多大用处。谢谢!工作得很好谢谢你!工作完美