晚上好,
我不知道为什么这个循环根本不起作用。它破坏了我的整个申请。下面是代码:
System.out.println("Please tell me what to count till?");
do
{
try
{
newEndingValue= input.nextInt();
if(newEndingValue >= 0 || newEndingValue <= 0)
{
break; //breaks the loop
}
}
catch (InputMismatchException e)
{
System.out.println("My Apologies, but COMMAND NOT RECOGNIZED!" + "\nPlease tell me what to count till?");
input.next();
}
}
while(!input.hasNextInt());
v.setEndingValue(newEndingValue);
System.out.println("Please tell me what to count from?");
if(increasingOrDecreasing.equalsIgnoreCase("Increasing")|| increasingOrDecreasing.equals("++") || increasingOrDecreasing.equals("+"))
{
do
{
try
{
newInitialValue = input.nextInt();
if(newInitialValue < v.getEndingValue())
{
break;
}
else{
System.out.println("My Apologies, but starting point value must be smaller than ending point value!" + "\nPlease tell me what to count from?");
newInitialValue = (v.getEndingValue()+10);//overrides the value to something that forces the loop back
}
}
catch (InputMismatchException e)
{
System.out.println("My Apologies, but COMMAND NOT RECOGNIZED!" + "\nPlease tell me what to count from?");
input.next();
}
}
while(!input.hasNextInt() || newInitialValue > v.getEndingValue());
}
else
{
do
{
try
{
newInitialValue = input.nextInt();
if(newInitialValue > v.getEndingValue())
{
break; //breaks the loop
}
else{
System.out.println("My Apologies, but starting point value must be larger than ending point value!" + "\nPlease tell me what to count from?");
newInitialValue = (v.getEndingValue()-10);//overrides the value something that forces the loop back
}
}
catch (InputMismatchException e)
{
System.out.println("My Apologies, but COMMAND NOT RECOGNIZED!" + "\nPlease tell me what to count from?");
input.next(); //consumes the erroneously typed string value
newInitialValue = (v.getEndingValue()-10);
}
}
while(!input.hasNextInt() || newInitialValue < v.getEndingValue());
}
所以当输入no时输出,然后输入1000如下:
请告诉我要算什么?
没有
我很抱歉,但命令不被认可!
请告诉我要算什么?
1000
请告诉我从中算些什么?
我的道歉,但起点值必须小于终点值!
请告诉我从中算些什么?
为什么直接进入第二个写的其他声明? 为什么要跳过newInitialValue的用户条目? 请注意,如果在输入newEndingValue的字符串后,在结束值块之后编辑代码,然后正确输入一个数字,这会解决我的错误,但如果再次运行并且用户合作则生成另一个:
...
newInitialValue = input.nextInt(); //essentially gets skipped over by compiler only when previous catch statement is triggered
System.out.println("Please tell me what to count from?");
if(increasingOrDecreasing.equalsIgnoreCase("Increasing")|| increasingOrDecreasing.equals("++") || increasingOrDecreasing.equals("+"))
{...
另外,因为它的打印输出&#34;但起点值必须小于终点值&#34;我们可以推断它分别使用if(increment ...)循环和do和try循环。但它跳过了(newI ... = input ...)和if(newIntia ...)代码行。我知道这个原因甚至手动输入newInitialValue = 2(在参数中)它仍然转到这个else子句。
答案 0 :(得分:0)
-_-所以问题在while语句中:
while(!input.hasNextint())
这向前看并检查下一个用户输入,但由于捕获消耗了一个它看起来到下一个下一个并且它变得模糊...基本上如果我不使用它它起作用。 相反,我用过:
while(isError == true)
并在带有嵌套if语句的do循环下,我有:
if(blah blah blah){
isError=false;
break;
在下一个循环块之前,我只是覆盖了isError
isError=true;
//next block of code
答案 1 :(得分:-1)
这里的问题是,如果值1为真或者value2为true或者value3为true,那么你说java做了一些事情,然后如果使用或者你在其他地方做同样的事情你就说了。你必须明白你需要使用和&amp;&amp;为了帮助java了解else参数。