[js]
public class RomeChar {
int wert = 0;
char zeichen = ' ';
public RomeChar(int wert, char zeichen) {
this.wert = wert;
this.zeichen = zeichen;
}
}
[/js]
[js]import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Rome {
public RomeChar RomeArray[] = new RomeChar[7];
//Konstruktor
public Rome() {
initRomeChars();
}
//Methode zur initialisierung der möglichen Römischen Zeichen mit Wert und Zeichen
public void initRomeChars() {
RomeArray[0] = new RomeChar(1, 'I');
RomeArray[1] = new RomeChar(5, 'V');
RomeArray[2] = new RomeChar(10, 'X');
RomeArray[3] = new RomeChar(50, 'L');
RomeArray[4] = new RomeChar(100, 'C');
RomeArray[5] = new RomeChar(500, 'D');
RomeArray[6] = new RomeChar(1000, 'M');
}
//Methode zur Berechnung der Dezimalzahl
public int toDezimal(String param) {
char uebChar[] = param.toCharArray();
int zahl = 0, index = 0, indexBack = 0, right = 0, left = 0;
for (int i = 0; i<=uebChar.length; i++) {
indexBack = index;
if (indexBack < uebChar.length) {
left = getWert(uebChar[indexBack]);
if (left == 0) break;
}
else break;
if (indexBack+1 < uebChar.length) right = getWert(uebChar[indexBack+1]);
else {
zahl += left;
break;
}
if (left >= right) zahl+=left;
else {
zahl += right-left;
index++;
}
index++;
}
return zahl;
}
//Methode um den Wert zum Char zu bekommen
public int getWert (char index) {
for (RomeChar ilt : RomeArray) {
if(ilt.zeichen == index) {
return ilt.wert;
}
}
//Fehler-Dialog bei ungültigem Zeichen
JOptionPane.showMessageDialog(new JFrame(), "Ungültiges Zeichen: "+index, "Error", JOptionPane.ERROR_MESSAGE);
return 0;
}
}
[/js]
[js]import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Dialog extends JFrame implements ActionListener {
Rome romeInt = new Rome();
static JTextField dez = new JTextField();
JTextField rom = new JTextField();
JButton toDezimal = new JButton("toDezimal");
JButton reset = new JButton("reset");
JPanel buttons = new JPanel();
JPanel textPanel = new JPanel();
public Dialog() {
initButtons();
initText();
initThis();
}
public void initThis() {
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setTitle("Römisch - Dezimal - Umrechner");
this.setSize(300,150);
this.setLocation(200,200);
this.setLayout(new BorderLayout());
this.add(textPanel, BorderLayout.NORTH);
this.add(buttons, BorderLayout.SOUTH);
this.setVisible(true);
}
public void initText() {
rom.setText("Römischer Wert");
dez.setText("Dezimalwert");
textPanel.setLayout(new BorderLayout());
textPanel.add(rom, BorderLayout.NORTH);
textPanel.add(dez, BorderLayout.SOUTH);
}
public void initButtons() {
toDezimal.setActionCommand("rome");
toDezimal.addActionListener(this);
reset.setActionCommand("reset");
reset.addActionListener(this);
buttons.setLayout(new GridLayout(0,1));
buttons.add(toDezimal);
buttons.add(reset);
}
@Override
public void actionPerformed(ActionEvent arg0) {
String cmd = arg0.getActionCommand();
if (cmd.equals("rome")) {
dez.setText(""+romeInt.toDezimal(rom.getText()));
}
if (cmd.equals("reset")) {
dez.setText("");
rom.setText("");
}
}
public static void main(String args[]) {
Dialog neu = new Dialog();
}
}
[/js]