繁体   English   中英

Java中的二进制到十进制转换(打破循环)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM