为什么它跳过While循环中的If语句?打印出“没有工作”,为什么?

时间:2013-10-17 22:53:43

标签: 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

如果输入“y”,它会直接进入else语句。

while (valid == true)
{

它总是会跳过这句话

    if (ans == "y")
    {
       System.out.println("it works");
       valid = false;
    {
    else
    {   
       System.out.println("no work");
       valid = false;
    {   
}   


   }

}

它不会工作

2 个答案:

答案 0 :(得分:6)

 if (ans == "y")

请勿将字符串与==进行比较。比较对象引用(相同的字符串)。使用:

 if ("y".equals(answer))

代替。它将比较字符串的相等性(检查它们是否相同而不是相同的字符串)。我不使用answer.equals("y"),因为如果answer因任何原因为空,则存在空指针异常的风险。

答案 1 :(得分:0)

在字符串中,不要使用==,您可以使用compareTo代替。

  if ("y".comprateTo(answer))

使用此方法,您可以检查它们是否相同,或者一个是否大于另一个。

如果您有疑问,请告诉我们

相关问题