我正在学习用Java编写代码,我正在努力解决需要布尔变量的问题。注意-不,这不是家庭作业。我在自学。
我遇到的问题是,有时我的代码对这个问题的工作,其他时候,它不。我把这个问题放到NetBeans中来检查是否有语法错误,但我没有找到任何语法错误,所以我希望有人能更好地说明应该如何编写代码。
教科书上的问题:声明一个名为allValid的布尔变量。然后,从输入中读取整数numInts,表示接下来要读取的整数的数量。使用循环从输入中读取剩余的整数。如果所有的numInts整数都在1到10的范围内(包括1和10),则将allValid赋值为true。否则,将allValid赋值为false。
如果allValid为true,则main()末尾的代码输出“All valid”,如果allValid为false,则输出“Has non-matching value(s)”。
例如:如果输入为:
则输出为:
有不匹配的值
我的答案是教科书式的问题(我写的代码在我放了一行星号的地方之间):
import java.util.Scanner;
public class IntegerData {
public static void main(String [] args) {
Scanner scnr = new Scanner(System.in);
int numInts;
****************My code starts****************
boolean allValid = true;
int newInput;
int i;
numInts = scnr.nextInt();
for(i=0; i<numInts; ++i) {
newInput = scnr.nextInt();
if (((newInput > 0) && (newInput < 11))) {
allValid = true;
}
else {
allValid = false;
}
}
**************My code ends********************
if (allValid) {
System.out.println("All valid");
}
else {
System.out.println("Has non-matching value(s)");
}
}
}
字符串
例如,以下数字起作用:11,-2,5,12,-1,14(输出“Has non-matching value(s)”以下数字不起作用,例如:6、2、12、4、9(输出“全部有效”)
不,它与>10和<0没有任何关系,因为负数有时也会得到不正确的输出。
2条答案
按热度按时间rjzwgtxy1#
您当前正在达到一个false值,然后继续进行下一个循环迭代,这将覆盖
allValid
的前一个值,从而有效地使循环的最终结果变得重要。相反,您可以将
allValid
设置为true
作为初始值,然后将其设置为false
,直到达到无效值。您不需要将allValid
设置回true,因为一旦它失败,它应该保持失败。下面看看修改后的代码
字符串
注意:我还做了一些小的修改,比如只在需要的范围内声明变量。
测试运行:
型
llew8vvj2#
你给出了2,5,20作为有问题的输入。20大于10。
(20 < 11)
为false。另外,你不应该需要这么多的括号。这应该可以工作:字符串