Hi Leute!
Mein kleines Dezimal-To-Binär-Rechner-Programm funktioniert komischerweise nur bei 3-Stelligen Werteeingaben. Z.B. wird 444 umgerechnet aber 4444 nicht mehr. Stattdessen kommt folgender Spruch:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1000101011100"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:459)
at java.lang.Integer.<init>(Integer.java:620)
at Operaions.dezToBin(Operaions.java:46)
at Operaions.main(Operaions.java:59)
Man beachte die Zahl mit den Einsen und Nullen. Diese ist die korrekte umrechnung von 4444. Wird aber komischerweise nicht mehr vernünftig ausgegeben.
Vielleicht kann mir jemand sagen, wo mein Fehler liegt?! Hier der code:
thanx 4 help!!!
Mein kleines Dezimal-To-Binär-Rechner-Programm funktioniert komischerweise nur bei 3-Stelligen Werteeingaben. Z.B. wird 444 umgerechnet aber 4444 nicht mehr. Stattdessen kommt folgender Spruch:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1000101011100"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:459)
at java.lang.Integer.<init>(Integer.java:620)
at Operaions.dezToBin(Operaions.java:46)
at Operaions.main(Operaions.java:59)
Man beachte die Zahl mit den Einsen und Nullen. Diese ist die korrekte umrechnung von 4444. Wird aber komischerweise nicht mehr vernünftig ausgegeben.
Vielleicht kann mir jemand sagen, wo mein Fehler liegt?! Hier der code:
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Operaions
{
static private long dezToBin(long dez)
{
//StringBuffer damit String manipuliert werden kann (Zahlen anhaengen und so)
StringBuffer bin = new StringBuffer();
try
{
//negative Zahlen erstmal nicht gut
if (dez < 0) throw new IllegalArgumentException("Sorry, " +
"negative Zahlen werden in dieser Version nicht unterstuezt");
//haette ich das in die Schleife drunter eigebaut (mit dez >= 0) waere die unendlich.
if (dez == 0) return 0;
while(dez > 0)
{
//ist die uebergebene Zahl durch 2 teilbar, haenge 0 an
if (dez % 2 == 0)
{
bin.append('0');
}
//ist die uebergebene Zahl durch 2 nicht teilbar, haenge 1 an
else
{
bin.append('1');
}
//uebergebene Zahl halbieren, und das ganze Spielchen nochmal von vorn
dez = dez / 2;
}
}
catch(IllegalArgumentException e )
{System.out.println(e);}
//fertigen String umdrehen, weil sonst falsch
bin = bin.reverse();
//In final String umwandeln damit...
String stringBin = bin.toString();
//String in Integer umgewandelt werden kann
long erg = new Integer(stringBin).longValue();
return erg;
}
public static void main(String[] args) throws IOException
{
BufferedReader eingabe = new BufferedReader (new InputStreamReader (System.in));
String dezimal = eingabe.readLine();
//Aus dem eingelesenen String einen long machen.
long dezimalLong = new Integer(dezimal).longValue();
long bin = dezToBin(dezimalLong);
System.out.println(bin);
}
}
Code:
thanx 4 help!!!