Java String Comparison失败,使用equals方法

时间:2013-09-26 20:15:23

标签: java string comparison

do
{
    System.out.println("Type another number to continue or type 'End' to end");
    end = scan.next();

    if("end".equals(end)==false||"End".equals(end)==false)
    {
        num2 = Integer.parseInt(end);   


        int j = 0;          
        while (j < num2)
        {
            System.out.println(name);
            j++;
        }

        if(j == 0)
        {
            num2 = 0;   
        }
    }   
} while("end".equals(end)==false||"End".equals(end)==false);    

字符串比较一直失败。当您键入“结束”或“结束”时,它会尝试将其解析为整数并返回错误。 Idk为什么会这样。

3 个答案:

答案 0 :(得分:3)

if("end".equals(end)==false||"End".equals(end)==false)

想一想:这永远都是真的。如果用户输入end,则第一种情况为true,第二种情况为false

您可以使用&&来修复它,但更好的方法是:

if(!("end".equalsIgnoreCase(end)))

此外,您不必检查条件两次,您可以使用

while (true) {
    System.out.println("Type another number to continue or type 'End' to end");
    end = scan.next();
    if ("end".equalsIgnoreCase(end)) break;
    // now do your stuff
    num2 = Integer.parseInt(end);
    // ...
}

答案 1 :(得分:2)

此行始终为true

if("end".equals(end)==false||"End".equals(end)==false)

因为其中至少有一个永远是真的。您希望它不等于"end" 不等于"End"。将||替换为&&

if("end".equals(end)==false && "End".equals(end)==false)

无需将值与false进行比较;只需使用!否定运算符:

if(!("end".equals(end)) && !("End".equals(end)))

您需要对do-while循环结束时的条件进行类似的更改。

答案 2 :(得分:0)

您正在通过语句endnum2解析为int num2 = Integer.parseInt(end); 那将是NumberFormatException