Eingabe auf Richtigkeit und Reihenfolg überprüfen

stehlo

Mitglied
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:
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!!!
 

stehlo

Mitglied
Hallo, nachdem ich leider bisher keine Antwort erhalten habe möchte ich mein Anliegen nochmals etwas besser darstellen:
Ich muss bis morgen die Lösung abgeben und mir fehlt eben noch der oben beschriebene Fall.
Um das klarer zu gestalten stelle ich die gesamte Aufgabenstellung online, meinen geschriebenen Programmcode seht ihr oben.

Hier bei dem war mir alles klar, die weiterführende aufgabe (siehe unten) muss ergänzt werden
Die Aufgabe: Wie war das bei den Römern? soll nun in umgekehrter Richtung funktionieren. Schreibe dazu in die Klasse Roemer eine Methode namens roemerUmgekehrt. Diese Methode soll einen String als Parameter übernehmen. Dieser String soll eine römische Zahl enthalten, die wieder in eine normale ganze Zahl umgewandelt werden soll. Die umgewandelte Zahl soll zurück gegeben werden.

Für die Umwandlung gilt:



  • M entspricht 1000.
  • D entspricht 500.
  • C entspricht 100
  • L entspricht 50.
  • X entspricht 10.
  • V entspricht 5.
  • I entspricht 1.
Schreibe dann eine weitere Klasse, die eine main-Methode enthält. Diese main-Methode soll mit Hilfe von JOptionPane eine römische Zahl vom Benutzer erfragen, und die entsprechende ganze Zahl mit Hilfe der Methode roemerUmgekehrt ermitteln und ausgeben.

Beispiel:
Der Benutzer gibt die Zahl CCLXXVIIII ein:

  • CC kommt 2x vor => 200
  • danach kommt L 1x vor => 50 insgesamt 250
  • danach kommt X 2x vor => 20 insgesamt 270
  • danach kommt V 1x vor => 5 insgesamt 275
  • danach kommt I 4x vor => 4 insgesamt 279
Das Ergebnis ist daher 279

Achte besonders auf:


  • Die Auswahl, welche römische Ziffer welchem Wert entspricht soll durch eine switch-case-Anweisung erfolgen
  • Es sind 2 Klassen zu schreiben und abzugeben.
  • Dokumentationskommentar für jede Klasse und Methode (außer main)
  • Einrückungen


Bei dieser Aufgabenstellung habe ich Probleme mit dem Fett markierten Teil:
Ändere Wie war das bei den Römern - Umkehrung so um, dass die richtige römische Schreibweise in eine Zahl umgewandelt wird. Dabei müssen zusätzlich noch folgende Punkte berücksichtigt werden:

  • CM entspricht 900.
  • CD entspricht 400.
  • XC entspricht 90
  • XL entspricht 40.
  • IX entspricht 9.
  • IV entspricht 4.
Achtung: Werte > 3999 oder kleiner 1 können (derzeit) nicht sinnvoll umgewandelt werden

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.

Ändere deine Ein-Ausgabe-Klasse entsprechend, so dass die Umwandlung nur dann erfolgt, wenn die Eingabe überhaupt eine gültige römische Zahl ist.

Achte besonders auf Folgendes:
  • Erstelle 2 Klassen, eine Klasse namens Umwandeln mit der Methode roemerUmgekehrt und der Methode validate und eine zweite Klasse mit der main-Methode
  • Dokumentationskommentare
  • Einrückungen
 

Flown

Administrator
Mitarbeiter
Du musst alle Zeichenabfolgen überprüfen die auf einen Zahl kommt. Das machen Parser übrigens auch so.

Oder einfach Regex verwenden (hab gesehn die gibt es auch schon für römische Ziffern).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Eingabe bei einem Klassen-Attribu auf Richtigkeit überprüfen Java Basics - Anfänger-Themen 6
Torschti Eingabe von Dezimalzahlen (bis zu zwei Kommastellen) Java Basics - Anfänger-Themen 11
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
M Dialogbox sofort neustarten, falls aktuelle Eingabe falsch Java Basics - Anfänger-Themen 11
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
A Bei VierGewinnt Eingabe per Buchstabe (a,b,c...) Java Basics - Anfänger-Themen 2
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Eingabe limit Java Basics - Anfänger-Themen 8
brypa Programm mit Eingabe Java Basics - Anfänger-Themen 129
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
H For-Schleife bis Index von Eingabe laufen lassen Java Basics - Anfänger-Themen 24
Hamudi Bachir 2D Array eingabe vom Benutzer Java Basics - Anfänger-Themen 31
S Warum erscheint bei mir "Hallo Welt" und nicht die aktuelle Eingabe? Java Basics - Anfänger-Themen 16
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
B Array bei jeder Eingabe um eins erweitern Java Basics - Anfänger-Themen 3
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N Fehlerausgabe bei falscher Eingabe der Users Java Basics - Anfänger-Themen 3
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
H Eingabe Java Basics - Anfänger-Themen 7
F Bedingung für Eingabe Java Basics - Anfänger-Themen 2
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
B Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen Java Basics - Anfänger-Themen 5
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
J Eingabe Einschränken Java Basics - Anfänger-Themen 1
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
D Array via Eingabe befüllen Java Basics - Anfänger-Themen 6
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N Abbrechen einer Eingabe endet im Fehler Java Basics - Anfänger-Themen 3
S Konsolen eingabe Java Basics - Anfänger-Themen 17
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
x-tshainge Bei if (eingabe = = ... ) enter als eingabe nehemen Java Basics - Anfänger-Themen 4
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
S Eingabe in anderer Klasse verwenden Java Basics - Anfänger-Themen 3
T Input/Output Falsche Eingabe ausgeben Java Basics - Anfänger-Themen 3
R Ratespiel mit Return und einer Eingabe Java Basics - Anfänger-Themen 1
K Eingabe in Array speichern und Ausgeben Java Basics - Anfänger-Themen 9
J Eingabe des Scanners an einer bestimmten Position Java Basics - Anfänger-Themen 6
J Input/Output Den zweiten Output erst nach Eingabe ausgeben Java Basics - Anfänger-Themen 4
R Java CMD Eingabe verbergen Java Basics - Anfänger-Themen 4
L Eingabe überprüfen Java Basics - Anfänger-Themen 7
M Eingabe des Benutzers Verwenden Java Basics - Anfänger-Themen 9
T Input/Output Int Eingabe auf Zahl überprüfen Java Basics - Anfänger-Themen 30
S Method mit Eingabe abrufen Java Basics - Anfänger-Themen 1
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
M Erste Schritte primzahlen ermitteln, nur zahlen als eingabe erlauben Java Basics - Anfänger-Themen 34
K Überprüfen ob Eingabe ein Float ist Java Basics - Anfänger-Themen 4
G Warum funktioniert das Programm für negative Eingabe nicht? Java Basics - Anfänger-Themen 3
O Erste Schritte Eingabe anweisungen eliminieren Java Basics - Anfänger-Themen 3
G Objekt Instanziierung von Eingabe abhängig machen Java Basics - Anfänger-Themen 5
E Wie Passwort-Eingabe (ohne Echo!) über Konsole ? Java Basics - Anfänger-Themen 4
B Interface JTextField Eingabe als String verwenden Java Basics - Anfänger-Themen 3
F Abfrage ob Eingabe eine Zahl ist Java Basics - Anfänger-Themen 3
H Alternative Eingabe Java Basics - Anfänger-Themen 3
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3
J Methoden Eingabe Methode nur Buchstaben Java Basics - Anfänger-Themen 4
F Die Teilersumme einer Eingabe berechnen Java Basics - Anfänger-Themen 11
H Leere Eingabe in einem array Java Basics - Anfänger-Themen 11
K Input/Output Nullstring als Eingabe Java Basics - Anfänger-Themen 4
M Eingabe im Terminal nicht möglich Java Basics - Anfänger-Themen 20
D Anzahl von Zahlen bei eingabe begrenzen Java Basics - Anfänger-Themen 37
T Input/Output Double und String als Eingabe einlesen Java Basics - Anfänger-Themen 9
N Error bei eingabe eines Punktes Java Basics - Anfänger-Themen 1
M Messandwendung nach Zeit und eigener Eingabe Java Basics - Anfänger-Themen 4
B Problem beim Angeben einer Eingabe Java Basics - Anfänger-Themen 12
D Fehler bei String eingabe via Scanner Java Basics - Anfänger-Themen 6
V char Eingabe aber nur für Buchstaben Java Basics - Anfänger-Themen 4
T Input/Output Programm beenden durch Eingabe Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben