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为什么会这样。
答案 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)
您正在通过语句end
将num2
解析为int num2 = Integer.parseInt(end);
那将是NumberFormatException