import java.util.Scanner;
public class asg3 {
public static int setoriginal() {
int d=0;
int l=0;
do {
Scanner input = new Scanner(System.in);
System.out.println("Please enter a 4 digit number: ");
d=input.nextInt();
if (d<=9999 || d>999) {
break;
} else {
System.err.printf ("You did not enter 4 digits\n");
}
l=l+1;
} while (l<3);
return d;
}
public static void main(String[] args) {
setoriginal();
}
}
当我输入12345时,它可以工作,但似乎不适用于除四位数之外的任何其他数字。 什么可能是错的或我做错了什么?先谢谢你们!
答案 0 :(得分:6)
看看这个条件:
if (d <= 9999 || d > 999)
要评估为false,你必须找到一个大于9999 且小于1000的值。我认为你很难找到这样的数字...
我怀疑你的意思是:
if (d <= 9999 && d > 999)
我个人认为这是:
if (d >= 1000 && d <= 9999)
或
if (1000 <= d && d <= 9999)
在所有这些版本中,您基本上都会检查它是否大于或等于1000 且小于或等于9999。
答案 1 :(得分:2)
将if (d<=9999 || d>999) {break;}
更改为if (d<=9999 && d>999) {break;}
您使用||
代替&&
。还要考虑更改顺序,使其如下所示;
if (d>=1000 && d<=9999)
break;
答案 2 :(得分:2)
if (d<=9999 || d>999) {break;}
每个数字低于9999或高于999;例如,15低于9999并使条件成立。我想,你应该替换||和&amp;&amp;操作
答案 3 :(得分:0)
只需将||
替换为&&
即可。应该工作:)