我正在创建一个简单的数学练习程序,但是我遇到了一个严重的问题,我的其他条件。当应该触发else块运行的条件时,if语句运行,即如果程序提示用户回答问题7 + 6,如果他们输入5,它仍然会说就像他们输入了正确的答案一样。在过去的几个小时里,我已经梳理了这个if if系列的每次迭代(这只是5中的一个),但我无法确定阻止else段运行的情况。
correctrange / correctrange2是随机生成的int值(目前它们总是分别为7和6) d1& d2与双精度值相同 人是一个错误参数 当input1 = q时,程序应该结束 编辑:这是一个更新版本,但错误仍然存在
//Addition
boolean addition = false;
while(input1 == 'A'|| input1 == 'a')
{
System.out.println("What is the solution to the problem " + correctRange
+ " + " + correctRange2 );
double input2 = userinput.nextDouble();
if(input2 <= (d1 + d2) + human ||
input2 >= (d1 + d2) - human)
{System.out.println("That is correct!");
System.out.println("What would you like to practice next?");
addition = true;
}
while (!addition)
{System.out.println("The correct solution is " +
correctRange + correctRange2);
input1 = 'q';
}
input1 = userinput.next().charAt(0);
}
答案 0 :(得分:0)
每次拨打userinput.nextDouble()
时,它都会读取一个新的双倍。如果你召唤它两次,那么期待一个新的双倍。
if(userinput.nextDouble() <= (d1 + d2) + human ||
userinput.nextDouble() >= (d1 + d2) - human)
如果第一个条件为假,则读取一个或两个。
很可能你打算做
double input = userinput.nextDouble();
if(input <= (d1 + d2) + human ||
input >= (d1 + d2) - human)
或者你可以写
if(Math.abs(input - (d1 + d2)) <= human)
注意:=
是作业,==
是比较
while (addition = false)
总是false
你想要的可能是什么
while (addition == false)
或更好
while (!addition)
答案 1 :(得分:0)
问题在于你的条件:
NSString *dateStr = @"2016-01-18T13:28:06.357";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];
NSDate *date = [formatter dateFromString:dateStr];
让我们取你的样本值:d1 = 6,d2 = 7,人类= 0。
if (input2 <= (d1 + d2) + human ||
input2 >= (d1 + d2) - human)
?是的,确定5 <= (6+7)+0
?是的,仍然是真的13 <= (6+7)+0
?不,但是:20 <= (6+7)+0
?是的!我认为你的情况应该是:
20 >= (6+7)-0