2
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);    

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

4

3 回答 3

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);
    // ...
}
于 2013-09-26T20:17:57.693 回答
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 循环结束时对条件进行类似的更改。

于 2013-09-26T20:17:55.380 回答
0

您正在通过语句解析end为 int 。 那会让你num2num2 = Integer.parseInt(end);
NumberFormatException

于 2013-09-26T20:17:29.147 回答