Hallo!
Mein Problem ist, dass ich mit dem Programm verschiedene Methoden realisieren soll. Z.B: ein Wort soll in Spiegelschrift ausgegeben werden. Das klappt auch soweit alles bis auf den Teil, wo die Eingabe lexikographisch sortiert werden soll.
Weiß jemand vielleicht woran das liegt?
Vielen Dank schonmal
Miri
Mein Problem ist, dass ich mit dem Programm verschiedene Methoden realisieren soll. Z.B: ein Wort soll in Spiegelschrift ausgegeben werden. Das klappt auch soweit alles bis auf den Teil, wo die Eingabe lexikographisch sortiert werden soll.
Weiß jemand vielleicht woran das liegt?
Vielen Dank schonmal
Miri
Code:
import java.io.*;
public class Aufgabe_3c {
public static void main (String[] args) {
boolean check1=false, check2=false;
String Eingabe;
BufferedReader buffy = new BufferedReader(new InputStreamReader(System.in));
// Eingabebuffer
do {
for (int i=0; i<=3; i++) { System.out.println("\n"); }
//Gibt vier Leerzeilen aus
System.out.println("Menue - Bitte treffen Sie ihre Auswahl:");
System.out.println("---------------------------------------------------------------------------------");
System.out.println("[1] Wortanalyse - Lassen Sie Buchstaben in einem Wort zaehlen.");
System.out.println("[2] Spiegelschrift - Eingabe eines Wortes,gespiegelte Ausgabe.");
System.out.println("[3] Sortierung - Sortieren Sie ein Wort nach lexikographischer Reihenfolge.");
System.out.println("[4] Abbruch - Verlassen des Programmes.");
System.out.println("---------------------------------------------------------------------------------");
do {
try {Eingabe = buffy.readLine(); }
// Menupunkt - Eingabe durch Benutzer
catch(IOException e) { return; }
// mit Kontrollroutine auf richtige Eingabe (nur 1-4)
if (Eingabe.equals("1") || Eingabe.equals("2") ||Eingabe.equals("3") || Eingabe.equals("4")) {
// Wenn korrekte Eingabe
check1=true; }
// Verlassen der routine moeglich (check1=true) (Schleife springt zu while)
else {
// Wenn falsche Ausgabe,dann
System.out.println("Falsche Eingabe - Bitte Geben sie eine Zahl zwischen 1 und 4 ein!");
// Fehlermeldung
check1=false;
// dowhile wird wiederholt (check1=false).
}
} while (!check1);
// Eingaberoutine wird verlassen wenn check1=true (richtige Eingabe)
switch(Integer.parseInt(Eingabe)) {
// Die Benutzereingabe (1-4) wird in Integer umgewandelt, damit dieser Gegenstand der switch/case Anweisung wird
case 1:
// Bei Menauswahl 1
String Buchstabe;
// String fuer den Buchstaben
char BChar;
// Char Variabel fuer den Buchstaben
boolean flag = false;
// Flag, ob Buchstabe vorhanen ist!
for (int i=0; i<=3; i++) { System.out.println("\n"); }
//Gibt vier Leerzeilen aus
System.out.println("Wortanalyse");
System.out.println("Bitte geben sie ein Wort ein:");
try {Eingabe = buffy.readLine(); }
// Eingabe des Wortes
catch(IOException e) { return; }
boolean VergleichsArray[] = new boolean[Eingabe.length()];
// Vergleichsarray mit Stringlange erzeugen
for (int i=0; i<Eingabe.length(); i++) {VergleichsArray[i]=false;}
// alle Werte im Array auf false (preset)
char[] WArray = Eingabe.toCharArray();
// Eingegebenes Wort zu CharArry konvertieren
System.out.println("Bitte geben Sie jetzt den Buchstaben ein, nachdem das Wort durchsucht werden soll: ");
try {Buchstabe = buffy.readLine(); }
// Eingabe des Buchstaben in String
catch(IOException e) { return; }
BChar=Buchstabe.charAt(0);
// 1. Buchstabe der Eingabe in CharVar
for (int i=0; i<Eingabe.length(); i++) {
// Eingabe Array durchgehen,
if (WArray[i] == BChar) {
// wenn Array Stelle = Buchstabe,
flag = true;
// --> Buchstabe kommt vor, Flag(Makierung) setzen!
VergleichsArray[i] = true;
// --> Position im Vergleichsarray festhalten
}
}
// Ausgabe
if (flag==true) {
// Wenn Buchstabe vorkommt:
for (int i=0; i<Eingabe.length(); i++) {
// Vergleichsarray durchgehen,
if (VergleichsArray[i]==true) {
// wenn markierte Stelle erreicht wurde,
System.out.println("Buchstabe gefunden an Stelle: " +(i+1));
// --> Ausgabe der Position des Buchstaben im Wort (i+1), weil i bei 0 anfaengt
}
}
}
// ansonsten ist der Buchstabe nicht vorhanden (doc)
else { System.out.println("Der Buchstabe kommt nicht im Wort vor."); }
break;
// Programm wird abgebrochen, da es fertig ist
case 2:
// Bei Menauswahl 2
for (int i=0; i<=3; i++) { System.out.println("\n"); }
//Gibt vier Leerzeilen aus
System.out.println("Spiegelschrift");
System.out.println("Bitte geben Sie ein Wort ein.");
try {Eingabe = buffy.readLine(); }
// Eingabe des Wortes
catch(IOException e) { return; }
char EingabeArray[] = Eingabe.toCharArray();
// Eingegebenes Wort --> CharArray
System.out.println("Ausgabe des Wortes in Spiegelschrift:");
for (int i=EingabeArray.length-1; i>=0; i--)
{System.out.print(EingabeArray[i]);}
// Umgekehrte Ausgabe des Arrays
break;
// Programm wird abgebrochen, da es fertig ist
case 3:
// Bei Menauswahl 3
boolean sortflag;
char tempchar;
// Char Zwischenspeicher fuer Tausch
for (int i=0; i<=3; i++) { System.out.println("\n"); }
//Gibt vier Leerzeilen aus
System.out.println("lexikographische Sortierung");
System.out.println("Bitte geben Sie ein Wort ein.");
try {Eingabe = buffy.readLine(); }
// Eingabe des Wortes
catch(IOException e) { return; }
char[] charArray = Eingabe.toCharArray();
// String in charArray umwandeln
do {
// Bubblesortiert
sortflag = false;
// standartmaessig kein Tausch am Anfang
for (int i=0; i<charArray.length-1; i++) {
if (charArray[i] > charArray[i+1]) {
// aktuelle Stelle im array groesser als folgende? (ASCII)
tempchar = charArray[i];
// ja: Vertauschen durch Auslagerung
charArray[i] = charArray[i + 1];
charArray[i + 1] = tempchar;
sortflag = true;
// Es hat ein Tausch stattgefunden
}
}
} while (sortflag==true);
// charArray wieder in den String Eingabe umwandeln
System.out.println("Ausgabe des sortierten Wortes: ");
System.out.println(Eingabe);
// Ausgabe des sortierten Ergebnisses
break;
// Programm wird abgebrochen, da es fertig ist
case 4:
// Bei Menueauswahl 4
for (int i=0; i<=3; i++) { System.out.println("\n"); }
//Gibt vier Leerzeilen aus
break;
// Abbruch - Verlassen des swicht/case Bereiches
}
System.out.println("\n\nWollen Sie ins [M]enue zurueckkehren oder das Programm [B]eenden?");
do {
try {Eingabe = buffy.readLine(); }
// Eingabe / Abfrage auf Programmwiederholung s.o.
catch(IOException e) { return; }
if (Eingabe.equals("M")) { check2=false; }
// --> M, dann Menu (dowhile Bedingung erfuellt)
if (Eingabe.equals("B")) { check2=true; }
// --> B, dann Beenden (dowhile Bedingung nicht erfuellt)
} while(Eingabe.equals("M")==false && Eingabe.equals("B")==false);
// Wiederholung bis gueltige Eingabe erfolgt
} while(!check2);
// Zum Verlassen des Programm Ablaufes muss check2 = true sein
System.out.println("Programm beendet.");
}
}