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(); } }