hallo, ich habe ein Programm geschrieben, wo ich römische Buchstaben eingebe und mir anschließend die Zahl dafür ausgegeben wird. In der main Methode wird nur ein String eingelesen und anschließend mit der Methode Roemer berchnet.
Das funktioniert auch, aber ich muss folgendes dazumachen:
"Weiters soll mit Hilfe einer Klassenmethode namens validate sicher gestellt werden, dass es sich um eine gültige römische Zahl handelt. Diese Methode übernimmt eine römische Zahl als String und überprüft, ob es sich um eine gültige römische Zahl hat (die richtigen Zeichen in der richtigen Reihenfolge). Wenn der übergebene String eine gültige römische Zahl ist, gib true zurück, sonst false."
leider weiß ich nicht wie ich (vor allem die richtige Reihenfolge) das überprüfen kann.
Ich hoffe mir kann jemand einen Lösungsvorschlag nennen.
Hier noch meine Programmcodes:
und noch die main methode:
Vielen Dank!!!
Das funktioniert auch, aber ich muss folgendes dazumachen:
"Weiters soll mit Hilfe einer Klassenmethode namens validate sicher gestellt werden, dass es sich um eine gültige römische Zahl handelt. Diese Methode übernimmt eine römische Zahl als String und überprüft, ob es sich um eine gültige römische Zahl hat (die richtigen Zeichen in der richtigen Reihenfolge). Wenn der übergebene String eine gültige römische Zahl ist, gib true zurück, sonst false."
leider weiß ich nicht wie ich (vor allem die richtige Reihenfolge) das überprüfen kann.
Ich hoffe mir kann jemand einen Lösungsvorschlag nennen.
Hier noch meine Programmcodes:
Code:
public class Roemer
{
public static int roemerUmgekehrt(String Romzahl){
int ergebnis=0;
char aktuellesZeichen;
String romzahl=Romzahl.toLowerCase(); //Alles in klein Umwandeln, um auch klein eingegebene Röm. Zahlen zu brücksichtigen
for(int zaehler=0;zaehler<romzahl.length();zaehler++){
aktuellesZeichen= romzahl.charAt(zaehler);
switch(aktuellesZeichen){
case 'm':
ergebnis+=1000;
break;
case 'd':
ergebnis+=500;
break;
case 'c':
if (romzahl.charAt(zaehler+1)=='m'){//Wenn nach dem C ein M stht: CM=900
ergebnis+=900;
zaehler++; //Um das m nicht doppelt zu rechnen
break;}
else if(romzahl.charAt(zaehler+1)=='d'){
ergebnis+=400;
zaehler++;
break;}
else{
ergebnis += 100;
break;}
case 'l':
ergebnis+=50;
break;
case 'x':
if(romzahl.charAt(zaehler+1)=='c'){
ergebnis+=90;
zaehler++;
break;}
else if(romzahl.charAt(zaehler+1)=='l'){
ergebnis+=40;
zaehler++;
break;}
else{
ergebnis+=10;
break;}
case 'v':
ergebnis += 5;
break;
case 'i':
if ((romzahl.length()>(zaehler+1) && romzahl.charAt(zaehler+1)=='x')){ //um zu verhindern dass zaehler>länge, da sonst Fehlermeldung
ergebnis+=9;
zaehler++;
break;}
else if(romzahl.length()>(zaehler+1) && romzahl.charAt(zaehler+1)=='v'){
ergebnis+=4;
zaehler++;
break;}
else{
ergebnis+=1;
break;}
}
}
return ergebnis;
}
und noch die main methode:
Code:
import javax.swing.JOptionPane;
public class EinAusgabe
{
public static void main (String[] args){
String eingabe = JOptionPane.showInputDialog(null,"Bitte geben Sie eine römische Zahl ein, welche umgewandelt werden soll.");
int ergebnis=Roemer.roemerUmgekehrt(eingabe);
JOptionPane.showMessageDialog(null,"Die römische Zahl " + eingabe + " ist gleich zu " + ergebnis);
}
}
Vielen Dank!!!