【问题标题】:decimaltobinary (java.lang.NumberFormatException)十进制到二进制 (java.lang.NumberFormatException)
【发布时间】:2013-11-18 13:52:57
【问题描述】:

我试图做一个将十进制转换为二进制的小程序。 我的程序适用于 int

线程“main”中的异常 java.lang.NumberFormatException:对于输入字符串:“10000000000” 在 java.lang.NumberFormatException.forInputString(未知来源) 在 java.lang.Integer.parseInt(未知来源) 在 java.lang.Integer.parseInt(未知来源) 在 ConvertoBinary.binaryform(ConvertoBinary.java:35) 在 ConvertoBinary.main(ConvertoBinary.java:20)

这是我的javacode:

import java.util.Scanner;

public class ConvertoBinary {

    public static void main(String[] args) {

        int number; 

        Scanner scanner = new Scanner(System.in);

        System.out.println("Geben sie eine positive Dezimalzahl ein:");
        System.out.print("Dezimal: ");
        number=scanner.nextInt();

        if (number <=0)
            System.out.println("Error: Keine positive Dezimalzahl erkannt");
        else { 

            System.out.print("Binär: ");
            System.out.print(binaryform(number));
        }
        scanner.close();
    }

    public static int binaryform(int number) {

       String rest = "";

       while (number > 0) {
           rest = number%2 + rest;
           number = number/2;

       }

      number = Integer.parseInt(rest);
      return number;
    }
}

【问题讨论】:

标签: java binary decimal


【解决方案1】:

您返回的结果为int,超出了Integer.MAX_VALUE 的限制。您应该返回结果 String 而不是 int

public static String binaryform(int number) {

   String rest = "";

   while (number > 0) {
       rest = number%2 + rest;
       number = number/2;

   }

  //number = Integer.parseInt(rest); Commented it
  return rest;
}

【讨论】:

  • 非常 - 就这么简单:D
【解决方案2】:

"10000000000",这种二进制形式太大而无法转换并适合 int。整数可以是Integer.MAX_VALUE 的最大值,即2147483647。然而Integer 类提供了一个有用的函数Integer.toBinaryString(int) 将给定的整数转换为二进制字符串。

【讨论】: