Hallo, ich arbeite mich gerade in Java ein und hab n Beispielprogramm als Übung genommen.
Das Programm soll eine Binärzahl in eine Dezimalzahl umwandeln und ausgeben.
Ich lese die Binährzahl über die Tastatur ein und speicher diese als String, danach packe ich die einzelnen Chars des Strings in ein Char Array. Jetzt möchte ich die Char Werte einzeln auslesen und berechnen, das ergebniss soll in einer short Variablen gespeichert werden.
Mein problem ist das Auslesen und berechnen, ich weiß nicht genau wie ich das am besten anpacke, im mom versuche ich erst die einzelnen werte auszulesen, als short zu speichern und dann mit short variablen die berechnung zu machen.
Hier der Codeauschnitt (Werte sind im Char Array - 16stellig nur 1 und 0 ist schon überprüft)
Hier nochmal das komplette code
Ich arbeite mit JEdit unter Mac Tiger (10.4.11)
javac 1.5.0_16
java version "1.5.0_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-275)
Java HotSpot(TM) Client VM (build 1.5.0_16-132, mixed mode, sharing)
Über eine hilfreiche Antwort würde ich mich sehr freuen =)
Das Programm soll eine Binärzahl in eine Dezimalzahl umwandeln und ausgeben.
Ich lese die Binährzahl über die Tastatur ein und speicher diese als String, danach packe ich die einzelnen Chars des Strings in ein Char Array. Jetzt möchte ich die Char Werte einzeln auslesen und berechnen, das ergebniss soll in einer short Variablen gespeichert werden.
Mein problem ist das Auslesen und berechnen, ich weiß nicht genau wie ich das am besten anpacke, im mom versuche ich erst die einzelnen werte auszulesen, als short zu speichern und dann mit short variablen die berechnung zu machen.
Hier der Codeauschnitt (Werte sind im Char Array - 16stellig nur 1 und 0 ist schon überprüft)
Code:
/*
Variablen deklarieren
*/
String s = "";
short ergebnis;
int temp, potenz = 1;
...snip...
for (int i = 15; i >= 0;i--) // Rückwärts den String durchlaufen und einzelne Werte berechnen
{
temp = wert[i]; // Wert aus Array an der Stelle i auslesen
//ergebnis = (potenz * temp);
//ergebnis = (potenz * ergebnis);
//potenz = (potenz * potenz); // Potenz für die nächste runde erhöhen
System.out.println(+i+" index");
System.out.print(wert[i]+" Soll Wert");
System.out.println();
System.out.println(+temp+" Ist Wert");
//System.out.println(+potenz);
System.out.println();
}
Hier nochmal das komplette code
Code:
import java.io.*;
public class bin2dez { // Klasse, die das Hauptprogramm umschliesst
public static void main(String args[]) throws IOException { // Hauptprogramm
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
/*
Variablen deklarieren
*/
String s = "";
short ergebnis;
int temp, potenz = 1;
do
{
do
{
System.out.println("Bitte geben sie den 16stelligen Bin√§rcode ein: ");
s = in.readLine(); // Werte von der Tastatur in den String einlesen
if( s.matches( "[01]*" ) ) // Überprüfen ob der String der Menge [0,1] angehört
{
System.out.println( " " );
System.out.println( "Der String ist gueltig." );
char[] wert = s.toCharArray(); // String umwandeln in ein char-Array
System.out.println(new String(wert));
for (int i = 15; i >= 0;i--) // Rückwärts den String durchlaufen und einzelne Werte berechnen
{
temp = wert[i]; // Wert aus Array an der Stelle i auslesen
//ergebnis = (potenz * temp);
//ergebnis = (potenz * ergebnis);
//potenz = (potenz * potenz); // Potenz für die nächste runde erhöhen
System.out.println(+i+" index");
System.out.print(wert[i]+" Soll Wert");
System.out.println();
System.out.println(+temp+" Ist Wert");
//System.out.println(+potenz);
System.out.println();
}
System.out.println( "Ende");
}
else //Eingegebener String ist falsch, Fehler bestimmen & ausgabe
{
if (s.length() != 16)
{
System.out.println();
System.out.println( "Der String muss genau 16 Zeichen enthalten!" );
System.out.println( "Der eingelesene String enhielt: "+s.length()+" Zeichen" );
System.out.println();
}
else
{
System.out.println();
System.out.println( "Der String muss aus der Zahlenmenge 0,1 bestehen! " );
System.out.println( "Der eingegebene String enthält ungültige Zeichen: "+ s );
System.out.println();
}
}
} while (s.length() != 16);
} while (! s.matches( "[01]*" ));
}
}
Ich arbeite mit JEdit unter Mac Tiger (10.4.11)
javac 1.5.0_16
java version "1.5.0_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-275)
Java HotSpot(TM) Client VM (build 1.5.0_16-132, mixed mode, sharing)
Über eine hilfreiche Antwort würde ich mich sehr freuen =)