Hiho,
bin noch recht neu in Java und schreibe grad ein kleines Programm zur Umwandlung verschiedener Zahlensysteme (erstmal nur 2,8,10,16). Ist an sich ja relativ einfach mit Funktionen wie parseInt(x, n) und toBinaryString().
Mein Problem liegt jetzt bei negativen und Bruchzahlen. An sich weiss ich wie man sie per Hand umwandelt, meine Frage ist jetzt ob es dafür auch eine simplere, von Java bereits mitgelieferte Methode gibt oder muss ich das jetzt für jedes Zahlensystem von Hand machen?
Das Programm sieht zur Zeit so aus:
Welcher Weg ist also am einfachsten?
Danke schonmal im Vorraus.
bin noch recht neu in Java und schreibe grad ein kleines Programm zur Umwandlung verschiedener Zahlensysteme (erstmal nur 2,8,10,16). Ist an sich ja relativ einfach mit Funktionen wie parseInt(x, n) und toBinaryString().
Mein Problem liegt jetzt bei negativen und Bruchzahlen. An sich weiss ich wie man sie per Hand umwandelt, meine Frage ist jetzt ob es dafür auch eine simplere, von Java bereits mitgelieferte Methode gibt oder muss ich das jetzt für jedes Zahlensystem von Hand machen?
Das Programm sieht zur Zeit so aus:
Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
//Variablen deklarieren
public class Umwandler extends Applet implements ActionListener {
Label Titel, Resultat;
Button Convert, Copy;
TextField Eingabe;
Choice Format;
Checkbox Negative;
//Buttons und Textfelder erstellen und beschriften
public void init (){
Titel = new Label ("UMWANDLER",Label.CENTER);
Titel.setBackground(new java.awt.Color(255,255,128));
Eingabe = new TextField("");
Resultat = new Label ("Resultat",Label.CENTER);
Resultat.setBackground(new java.awt.Color(255,255,255));
Format = new Choice();
Format.add("Dezimal -> Binär");
Format.add("Dezimal -> Hexadezimal");
Format.add("Dezimal -> Octal");
Format.add("Binär -> Dezimal");
Format.add("Binär -> Hexadezimal");
Format.add("Binär -> Octal");
Format.add("Hexadezimal -> Dezimal");
Format.add("Hexadezimal -> Binär");
Format.add("Hexadezimal -> Octal");
Format.add("Octal -> Dezimal");
Format.add("Octal -> Binär");
Format.add("Octal -> Hexadezimal");
Convert = new Button ("CONVERT");
Convert.addActionListener(this);
Copy = new Button ("copy result to textfield");
Copy.addActionListener(this);
Negative = new Checkbox("Negative Zahl?",null,false);
setSize(200, 200);
setLayout(new GridLayout(7, 1));
add(Titel);
add(Eingabe);
add(Format);
add(Negative);
add(Convert);
add(Resultat);
add(Copy);
}
public void actionPerformed(ActionEvent z) {
if (z.getActionCommand() == "CONVERT") {
switch (Format.getSelectedIndex()){
case 0:
int dtb = Integer.valueOf(Eingabe.getText());
String dtbStr = Integer.toBinaryString(dtb);
Resultat.setText(dtbStr);
break;
case 1:
int dth = Integer.valueOf(Eingabe.getText());
String dthStr = Integer.toHexString(dth);
Resultat.setText(dthStr);
break;
case 2:
int dto = Integer.valueOf(Eingabe.getText());
String dtoStr = Integer.toOctalString(dto);
Resultat.setText(dtoStr);
break;
case 3:
int btd = Integer.parseInt(Eingabe.getText(), 2);
String btdStr = Integer.toString(btd);
Resultat.setText(btdStr);
break;
case 4:
int bth = Integer.parseInt(Eingabe.getText(), 2);
String bthStr = Integer.toHexString(bth);
Resultat.setText(bthStr);
break;
case 5:
int bto = Integer.parseInt(Eingabe.getText(), 2);
String btoStr = Integer.toOctalString(bto);
Resultat.setText(btoStr);
break;
case 6:
int htd = Integer.parseInt(Eingabe.getText(), 16);
String htdStr = Integer.toString(htd);
Resultat.setText(htdStr);
break;
case 7:
int htb = Integer.parseInt(Eingabe.getText(), 16);
String htbStr = Integer.toBinaryString(htb);
Resultat.setText(htbStr);
break;
case 8:
int hto = Integer.parseInt(Eingabe.getText(), 16);
String htoStr = Integer.toOctalString(hto);
Resultat.setText(htoStr);
break;
case 9:
int otd = Integer.parseInt(Eingabe.getText(), 8);
String otdStr = Integer.toString(otd);
Resultat.setText(otdStr);
break;
case 10:
int otb = Integer.parseInt(Eingabe.getText(), 8);
String otbStr = Integer.toBinaryString(otb);
Resultat.setText(otbStr);
break;
case 11:
int oth = Integer.parseInt(Eingabe.getText(), 8);
String othStr = Integer.toHexString(oth);
Resultat.setText(othStr);
break;
default:
break;
}
}
else if (z.getActionCommand() == "copy result to textfield") {
String copyresult = String.valueOf(Resultat.getText());
Eingabe.setText(copyresult);
}
}
}
Welcher Weg ist also am einfachsten?
Danke schonmal im Vorraus.