我陷入了这个活动,我需要测试键盘输入的数字是否有效,介于0和100之间。问题是,如果有人输入负数,它将同时打印“有效”和“无效”有效“我只想打印无效,有人可以帮助我吗?
Scanner scan = new Scanner(System.in);
System.out.println("Enter a test score: ");
double t = scan.nextDouble();
if(t <= 100)
{
System.out.println("Valid");
}
if(t > 0 )
{
System.out.println("Not Valid");
}
}
}
答案 0 :(得分:1)
这些问题可以通过以下方式轻松解决......只需仔细阅读您写入自己程序的内容!
含义:你,作为一个人类&#34;奔跑&#34;那个节目。你会发现:
首先检查数字是否小于100;然后打印&#34;有效&#34;。
然后检查数字是否大于0;然后打印&#34;无效&#34;。
你真的很惊讶 那个范围(0,100)同时是有效和无效的吗?!
所以答案是:
换句话说:在你开始编程之前,你需要清楚地理解&#34;范围&#34;你的问题。不要期望&#34;只是编写源代码&#34;确定要使用的规则。您需要在编码之前制定规则!
然后,你最终可能会:
if (t >= 0 && t <= 100) {
System.out.println("Valid");
} else {
System.out.println("Not valid");
}
或许,完全不同的东西。这取决于你认为真正有效的规则!
答案 1 :(得分:0)
试试这个:
if(t <= 100 && t > 0)
{
System.out.println("Valid");
}
else
{
System.out.println("Not Valid");
}
答案 2 :(得分:0)
您有两个独立的条件。如果您输入-1,则t <= 100
的评估结果为true,这就是您为Valid
打印的原因。
您应该使用AND &&
同时比较两个条件。
它应该是这样的:
if(t>0 && t<=100) {
System.out.println("Valid");
} else {
System.out.println("Not Valid");
}
答案 3 :(得分:0)
您将要测试0到100之间的值是否有效,然后其他所有值都无效:
if (t >= 0 && t <= 100) {
System.out.println("Valid");
} else {
System.out.println("Not valid");
}