2013-11-18 4 views
0

Я попытался сделать небольшую программу, которая преобразует десятичный код в бинар. Моя программа работает очень хорошо для Int < 1024. если я типа в 1024 или выше, я получаю эту ошибку:decimaltobinary (java.lang.NumberFormatException)

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)

это мой 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; 
    } 
} 
+0

Это, вероятно, лучше подходит для [codereview.stackexchange.com] (http://codereview.stackexchange.com/). –

ответ

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; 
} 
+0

очень много - просто так легко: D – eikood

0

"10000000000", эта бинарная форма является слишком большим, чтобы преобразовать и подтянутым в междунар. Максимальное значение, которое целое число может быть Integer.MAX_VALUE, которое равно 2147483647. Однако класс Integer предоставляет полезную функцию Integer.toBinaryString(int), чтобы преобразовать заданное целое число в двоичную строку.

Смежные вопросы