有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

二进制十进制(java.lang.NumberFormatException)

我试着做一个小程序,把十进制转换成二进制。 我的程序在int<;上运行得很好;1024.如果键入1024或更高,则会出现以下错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "10000000000" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at ConvertoBinary.binaryform(ConvertoBinary.java:35) at ConvertoBinary.main(ConvertoBinary.java:20)

这是我的Java代码:

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) 个答案

  1. # 1 楼答案

    "10000000000",此二进制形式太大,无法转换并适合整数。整数可以是Integer.MAX_VALUE的最大值,即2147483647。但是Integer类提供了一个有用的函数^{}来将给定的整数转换为二进制字符串

  2. # 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;
    }