【发布时间】:2017-11-12 03:47:55
【问题描述】:
我是 JAVA 新手(顺便说一下计算机编程)。以下程序检查输入是否为二进制。它应该提示用户重新输入整数,直到输入二进制数。但是这个程序做的恰恰相反。 如果输入是二进制的,它要求我重新输入整数,并且当输入非二进制时程序终止。 我需要一个认真的帮助,拜托。Here is my output
public static void main(String[] args) {
int value, userValue;
int binaryDigit = 0, notBinaryDigit = 0;
Scanner scan = new Scanner(System.in);
while (true) {
System.out.println("Please enter positive integers: ");
userValue = scan.nextInt();
value = userValue;
while (userValue > 0) {
if ((userValue % 10 == 0) || (userValue % 10 == 1)) {
binaryDigit++;
} else {
notBinaryDigit++;
}
userValue = userValue / 10;
}
if (notBinaryDigit > 0) {
System.out.println(value + " is a not a Binary Number.");
break;
} else {
System.out.println(value + " is a Binary Number.");
}
}
}
【问题讨论】:
-
if (!((userValue % 10 == 0) || (userValue % 10 == 1))-- 否定声明。 -
您是否在 IDE 调试器中单步执行了代码?那是开始的地方。如果您不知道如何使用调试器,请立即开始学习。如果您要进行任何编码,这是一项必备技能。
-
我不知道您打算将二进制值用于什么,但您应该考虑二进制数可以以一个或多个零开头。如果您将值存储在
int中,则会删除前导零。还要考虑当用户输入一个非常大的二进制数时会发生什么,当它被解析为int时超过了int可以表示的最大值。还要考虑您没有处理用户输入文本而不是数字的情况。最后,一般而言,您应该通过创建易于理解的小方法将逻辑分解为单元,这将简化代码。