Zahlenrechner

By | 28. Oktober 2013

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.

zahlenrechner[1]

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.