Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么它会跳过While循环中的If语句?它会打印出;“没有工作”;,为什么?_Java - Fatal编程技术网

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没有多大用处。谢谢!工作得很好谢谢你!工作完美