Der Zahlenrechner ist ein kleines Programm, dass ich nach 3 Monaten Einarbeitung in Java schreiben wollte, es aber nie fertiggestellt habe. Es kann Zahlen zwischen den Systemen 2 bis 32 in jeweils ein anderes umrechnen. Heute habe ich mich endlich an die Fertigstellung gemacht und veröffentliche hier den Quellcode.
Model.java
public class Model {
final char[] ziffern = { '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
'y', 'z' };
public int zuDezimal(String eingabe, int system) {
char[] zahl = eingabe.toLowerCase().toCharArray();
int ergebnis = 0;
int counter = 0;
for (int i = zahl.length - 1; i >= 0; i--) {
ergebnis += (int) (holeZahlenWert(zahl[i]) * Math.pow(system, counter));
counter++;
}
return ergebnis;
}
public int holeZahlenWert(char ziffer) {
for (int i = 0; i < ziffern.length; i++) {
if (ziffer==ziffern[i]) {
return i;
}
}
return 0;
}
public char gibZahlenZeichen(int zahl) {
return ziffern[zahl];
}
public String rechne(int zahl, int zielsystem) {
String ergebnis = "";
boolean weiter = true;
while (weiter) {
ergebnis = gibZahlenZeichen(zahl%zielsystem) + ergebnis;
zahl = (int)zahl/zielsystem;
if(zahl==0) {
break;
}
}
return ergebnis.toUpperCase();
}
}
View.java
import java.awt.Container;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class View {
JTextField input = new JTextField();
JTextField output = new JTextField();
JButton button = new JButton("Umrechnen");
JComboBox startsystem = new JComboBox();
JComboBox zielsystem = new JComboBox();
public View() {
JFrame frame = new JFrame("Zahlenrechner");
Container cp = frame.getContentPane();
cp.setLayout(null);
cp.setFocusable(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(280, 140);
input.setBounds(10, 10, 130, 25);
cp.add(input);
output.setBounds(10, 40, 130, 25);
cp.add(output);
startsystem.setBounds(150, 10, 100, 25);
cp.add(startsystem);
zielsystem.setBounds(150, 40, 100, 25);
cp.add(zielsystem);
fillLists();
button.setMargin(new Insets(5, 5, 5, 5));
button.setBounds(10, 70, 130, 25);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
int start = 2+startsystem.getSelectedIndex();
int ziel = 2+zielsystem.getSelectedIndex();
String in = input.getText();
Model m = new Model();
output.setText(m.rechne(m.zuDezimal(in, start), ziel));
}
});
cp.add(button);
frame.setVisible(true);
}
public void fillLists(){
String[] namen = {"2 (binär)", "3", "4", "5", "6", "7",
"8 (oktal)", "9", "10 (dezimal)", "11",
"12", "13", "14", "15", "16 (hexadezimal)",
"17", "18", "19", "20", "21", "22", "23",
"24", "25", "26", "27", "28", "29", "30",
"31", "32", "33", "34", "35", "36"};
for (int i = 0; i < namen.length; i++) {
startsystem.addItem(namen[i]);
zielsystem.addItem(namen[i]);
}
}
public static void main(String[] args) {
new View();
}
}