【发布时间】:2018-05-04 09:47:48
【问题描述】:
有人能告诉我为什么这段代码在我尝试从二进制数转换为十进制数时一直告诉我数字格式异常而不打印我的错误消息吗?`
public static void readAndConvertBinaryValue()
{
Scanner kbd = new Scanner(System.in);
boolean valid = false;
do
{
System.out.print("\nEnter a binary value containing up to 16"
+ " digits: ");
bAction = kbd.nextLine();
int result = bAction.compareTo(BINARY_NUM);
if (result > 1 || result < -9 || bAction.length() > 16)
{
System.out.print("Error: Invalid binary value."
+ "\nTry again.\nPress Enter to continue ...");
kbd.nextLine();
} else
{
char value;
int charlim = 0;
value = bAction.charAt(charlim);
if (value == '1' || value == '0')
{
binary = Integer.parseInt(bAction, 2);
valid = true;
} else
{
System.out.print("Error: Invalid binary value."
+ "\nTrya again.\nPress Enter to continue ...");
kbd.nextLine();
}
}
} while (!valid);
}
【问题讨论】:
-
我建议你检查所有的数字,而不仅仅是第一个。我还建议您检查少于 33 个,否则这也会给您一个 NumberFormatException。一个简单的方法不是不检查,而是在发生 NumebrFormatException 时捕获它。
-
我刚刚添加了代码
-
收到错误后放弃读取的下一行。我建议您在调试器中单步调试您的代码,以更好地了解您的代码在做什么?
-
如何检查所有数字? @PeterLawrey
-
@midknight 您可以使用正则表达式,也可以使用循环。我建议编写一个包含检查的方法。
标签: java binary runtime-error