decimaltobinary(java.lang.NumberFormatException)

时间:2013-11-18 13:52:57

标签: java binary decimal

我尝试做一个将小数转换为二进制的小程序。 我的程序适用于int< 1024.如果我输入1024或更高版本,我会收到此错误:

  

线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“10000000000”       at java.lang.NumberFormatException.forInputString(Unknown Source)       在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;
    }
}

2 个答案:

答案 0 :(得分:2)

您将返回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;
}

答案 1 :(得分:0)

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