Binäre in Dezimalzahlen < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:26 Di 18.12.2007 | Autor: | puky |
Aufgabe | Also ich soll Binärzahlen in Dezimalzahlen umwandeln und das mit BigInteger. Funktioniert nur nich richtig. Das Programm gibt z.B. bei Eingabe 00 gleich mal 144 aus. Vieleicht sieht ja einer was nich stimmt.
fg puky |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
import java.io.*;
import java.math.*;
public class Dezimal
{
public static BigInteger dezimal(String s)
{
BigInteger Dez=new BigInteger("0");
String m="";
int k=1;
int r=0;
int i=0;
int a = s.length();
while(a!=0)
{
n=s.charAt(r);
r=r+1;
i=n*k;
k=k*2;
a--;
try {
m=String.valueOf(i);
}
catch (NumberFormatException e) {
e.printStackTrace();
}
BigInteger u = new BigInteger (m);
Dez=Dez.add(u);
}
return Dez;
}
public static void main(String[] args)throws IOException
{
String s="";
BigInteger D=new BigInteger("0");
BufferedReader din = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("Bitte geben Sie eine Binaerzahl ein");
s = din.readLine();
D=dezimal(s);
System.out.println(D);
}
}
|
|
|
|
Hallo puky,
Ich habe dein Programm etwas verändert. Jetzt funktioniert es (zumindest bei mir).
1: |
| 2: | import java.io.*;
| 3: | import java.math.*;
| 4: |
| 5: | public class Dezimal
| 6: | {
| 7: | public static BigInteger dezimal(String s)
| 8: | {
| 9: | BigInteger Dez=new BigInteger("0");
| 10: | String m="";
| 11: | int k=1;
| 12: | int i=0;
| 13: | int a = s.length()-1;
| 14: | while(a!=-1)
| 15: | {
| 16: | int n;
| 17: | if(s.charAt(a) == '0')
| 18: | n=0;
| 19: | else n = 1;
| 20: | i+=n*k;
| 21: | k=k*2;
| 22: | a--;
| 23: | }
| 24: | try {
| 25: | m=String.valueOf(i);
| 26: | }
| 27: | catch (NumberFormatException e) {
| 28: | e.printStackTrace();
| 29: | }
| 30: | BigInteger u = new BigInteger (m);
| 31: | Dez=Dez.add(u);
| 32: | return Dez;
| 33: | }
| 34: | public static void main(String[] args)throws IOException
| 35: | {
| 36: | String s="";
| 37: | BigInteger D=new BigInteger("0");
| 38: |
| 39: | BufferedReader din = new BufferedReader(
| 40: | new InputStreamReader(System.in));
| 41: |
| 42: | System.out.println("Bitte geben Sie eine Binaerzahl ein");
| 43: | s = din.readLine();
| 44: |
| 45: | D=dezimal(s);
| 46: | System.out.println(D);
| 47: | }
| 48: | }
|
Grüße
Karl
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:36 Di 18.12.2007 | Autor: | puky |
Danke für deine Antwort.
mfg puky.
|
|
|
|