[英]Binary to Decimal Conversion in Java (breaking out of the loop)
我的转换代码可以正常工作,但是我似乎并不能限制用户输入0和1以外的数字。我设法在一定程度上处理了该问题:程序可以识别数字(例如2),但它会继续转换后面忽略的2本身并继续前进的数字。 如果输入2011,它将转换为十进制的3(011 = 3),而不是完全破坏。 我假设它与第一个条件有关,但是我不知道如何解决它,因此,我们将不胜感激。
我正在JavaFX中工作,因此使用了文本字段(t3)。
int decimal = 0;
int power = 0;
int bin = Integer.parseInt(t3.getText());
while (bin != 0) {
int temp = bin%10;
if(temp > 1) {
break;
} else {
bin = bin / 10;
decimal += temp * Math.pow(2, power);
power++;
}
}
您可以在parseInt调用中指定基数
int bin = Integer.parseInt(t3.getText(), 2);
它将解析一个二进制数,并在非法输入时抛出NumberFormatException
。
如果number大于1,则不要仅仅打破外观,而是抛出NumberFormatException。
int decimal = 0;
int power = 0;
int bin = Integer.parseInt("11");
while (bin != 0) {
int temp = bin%10;
if(temp > 1) {
throw new NumberFormatException("Invalid input"); //throw exception if input contains number greater than 0
} else {
bin = bin / 10;
decimal += temp * Math.pow(2, power);
power++;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.