Lieber Besucher, herzlich willkommen bei: Silkroad Online Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
maytz hats aber auch recht übersichtlich geschrieben : )))
selbst ich verstehs^^
na endlich, ich hab mir schon sorgen gemachtverdammt bin wieder süchtig nach kaffee...noiiiiiiiiiiiiiiiiiiin^^
Fürs Abitur lernt man doch nicht.
Vor allem nicht in NRW.
Java stinkt.Spoiler
[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]
Fürs Abitur lernt man doch nicht.
Vor allem nicht in NRW.
+1wenn mans nich verkacken will, dann schon >_<