PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: Zahlenumwandlung, Dezi in Dual



Latency
13.12.2003, 01:29
Okay ich hab versucht ein Java Pogramm zu schreiben welches Dezimalzahlen in Dualzahlen umwandelt.

Weil ich den Zahlen keine Grenzen setzen wollte versuchte ich das ganze in 2 Schleifen zu setzen. Eine für die Berechnung der Dualzahl und eine für die Korrekte Ausgabe der Dualzahl, allerdings bringt er mir beim ausführen einen Fehler mit dem ich überhaupt nix anfangen kann:rolleyes:

Das Programm (http://feuertaufe.squarenet.info/latency/Dualzahl.java) liegt hier als .java Datei vor. Also als Sourcecode. Vielleicht könnte mir jemand helfen das Problem zu lösen, wäre jedenfalls sehr dankbar :)

MuadDib
13.12.2003, 01:43
Da du ja den Dualinput nicht weiterverwendest, brauchst du nicht umständlich mit Arrays zu arbeiten, sondern einfach die Zahl immer vorne an den Ausgabestring dranreihen... Erspart Schleifen und Laufzeitkomplexität...

Hab mir erlaubt den Code "etwas" anzupassen :)


//Importieren
import javax.swing.JOptionPane;

//Main Class
public class Dualzahl
{
public static void main(String args[])
{
//Deklaration
String input, output = "";
int i;

//Let the show begin
input = JOptionPane.showInputDialog(null,"Geben sie eine Dezimal Zahl ein"
,"Zahl eingeben",JOptionPane.PLAIN_MESSAGE);
i = (Integer.parseInt(input));

if(i == 0) output = "0";

while(i != 0)
{
output = i % 2 + output;
i /= 2;
}

JOptionPane.showMessageDialog(null,"Die Dezimalzahl lautete: " + input +
"\nDie Dualzahl lautete: " + output ,"Ausgabe",JOptionPane.PLAIN_MESSAGE);
}
}

Edit:

Problem gabs übrigens mit einer Array Out-of-Bounds Exception, sprich: du wolltest auf ein Arrayelement zugreifen, dass nicht existiert...


Edit 2: Hab noch eine kleinere Lösung gefunden... es lebe die Java Klassenbibliothek :D



//Importieren
import javax.swing.JOptionPane;

//Main Class
public class Dualzahl
{
public static void main(String args[])
{
//Deklaration
String input;

//Let the show begin
input = JOptionPane.showInputDialog(null,"Geben sie eine Dezimal Zahl ein"
,"Zahl eingeben",JOptionPane.PLAIN_MESSAGE);

JOptionPane.showMessageDialog(null,"Die Dezimalzahl lautete: " + input +
"\nDie Dualzahl lautete: " + Integer.toBinaryString(new Integer(input).intValue())
,"Ausgabe",JOptionPane.PLAIN_MESSAGE);
}
}

Latency
13.12.2003, 01:57
Mhm...

Okay danke :)

Hatte erlich gesagt keine Ahnung wie das mit den Arrays lief und wollte deswegen etwas mit den Array und schleifen rumspielen, ist aber nix gescheites rausgekommen wie man sah :rolleyes:

Aber jetzt bin ich wieder ein Stücken schlauer :D

MuadDib
13.12.2003, 02:26
Achso... wenn du dich mit Arrays und Schleifen spielen willst gibts sicher geeigneteres... hier (http://www.soft.uni-linz.ac.at/Teaching/Begleitmaterial/Uebungen/_Softwareentwicklung_1/Folien%20Uebung%2005.pdf) sind ein paar nette Beispiele (wenn auch primitiv).

TheByteRaper
13.12.2003, 18:34
Gnihihi, ich liebe Java :D
Ich glaube, es gibt fast nichts, was Java nicht mit integrierten Bibliotheken lösen könnte ^_^
Auch wenn Edit 2 kürzer ist, find ich Lösung 1 besser, weil man da wenigstens sieht, was da so bei ner Binärumrechnung abgeht.
Will mans schnell machen, ist natürlich Edit2 besser, bevor man schnell den Algorithmus austüftelt.

Wollt ich nur mal erwähnt haben ^^° *wusch*

Master of Disaster
15.12.2003, 21:06
/me grüßt MuabDib

@ TheByteRaper
Ja, Java hat wirklich für (fast) alles und jedes eine fertig Lösung parat - man muß sie nur finden...