Hallo zusammen,
Habe eine Aufgabe zugeteilt bekommen, in der ein Benutzer Objekte durch Auswahl eines Enums erstellen, loeschen, ausgebenlassen und das Programm beenden kann.
Ich habe nun schon einiges herumprobiert, habe vielleicht irgendwo eine Dauerschleife, da Eclipse es nicht schafft das Programm auszufuehren.
Habe fuer euch mal das Hauptprogramm, bedanke mich für jede Hilfe im voraus.
Habe eine Aufgabe zugeteilt bekommen, in der ein Benutzer Objekte durch Auswahl eines Enums erstellen, loeschen, ausgebenlassen und das Programm beenden kann.
Ich habe nun schon einiges herumprobiert, habe vielleicht irgendwo eine Dauerschleife, da Eclipse es nicht schafft das Programm auszufuehren.
Habe fuer euch mal das Hauptprogramm, bedanke mich für jede Hilfe im voraus.
Java:
import mobil.*;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class HauptProgramm {
/** Hauptprogramm.
*
* @param args .
*/
public static void main(String[] args) {
ArrayList<Vehikel> liste = new ArrayList<Vehikel>();
// Setze Scanner
Scanner scanner = new Scanner(System.in);
// Lese Benutzereingabe ein.
String eingabeEnum = scanner.next();
Auswahl auswahl = Auswahl.valueOf(eingabeEnum);
dasMenue(auswahl, scanner, liste);
}
/** Methode zum pruefen ob der Enum richtig eingegeben wurde.
* @param zuPruefen ist der String, welcher auf gueltigkeit untersucht
* wird.
* [USER=49078]@Return[/USER] true, falls die Eingabe einem Enum entspricht.
*/
public static boolean pruefeAuswahl(String zuPruefen) {
boolean istOk = false;
if (zuPruefen.equals("N") || zuPruefen.equals("L")
|| zuPruefen.equals("Z") || zuPruefen.equals("E")) {
// So ist die eingabe Okay.
istOk = true;
}
return istOk;
}
/** Der Benutzer waehlt einen Menuepunkt aus,
* anhand dieser Auswahl wird in diesem Menue ein Objekt
* vom Typ Vehikel erstellt, geloescht oder alle ausgegeben.
*
*
* @param gewaehlt Der gewahlte Menuepunkt.
* @param scanner wird fuer die Eingabe benoetigt.
* @param liste ist die ArrayList aus dem Hauptprogram,
* in dieser werden Objekte hinzugefuegt oder geloescht.
* [USER=49078]@Return[/USER] den aufgerufenen Befehl.
*
*/
public static ArrayList<Vehikel> dasMenue(Auswahl gewaehlt, Scanner scanner,
ArrayList<Vehikel> liste) {
switch(gewaehlt) {
case N : // Benutzer will ein neues Vehikel erstellen.
int typ = 0;
System.out.println("Sie haben den Menuepunkt N gewaehlt.");
do {
textAusgeben();
typ = scanner.nextInt();
} while (kannErstellen(typ));
liste.add(erstelle(typ, scanner)); // Erstellt Auto oder Traktor.
break;
case L: // Vehikel soll geloescht werden.
String zuEntfernen = null; //Initialisiere um Error zu vermeiden.
boolean goOn = true; //Idiom aus dem
do {
//try {
zuEntfernen = scanner.nextLine();
if (zuEntfernen.equals(null)) {
System.err.println("Eingabe fehlerhaft. "
+ "Bitte wiederholen!");
} else {
goOn = false;
}
//} catch (InputMismatchException e) {
//scanner.nextLine(); // Fehlerhafte Zeile wegwerfen.
//}
} while (goOn);
// Bessere alternative.
int zaehler = 0;
boolean finde = true;
boolean nichtGefunden = true;
while (finde) {
if (liste.get(zaehler).getKennzeichen().equals(zuEntfernen)) {
System.out.println("Folgendes Vehikel wird geloescht:");
System.out.println(liste.get(zaehler).toString());
liste.remove(zaehler);
finde = false;
nichtGefunden = false;
} else {
zaehler++;
}
if (nichtGefunden) {
nichtGefundenAusgeben(zuEntfernen);
}
}
break;
case Z: // Gebe alle gespeicherten Objekte aus.
for (int i = 0; i < liste.size(); i++) {
// Gebe alle Elemente aus.
System.out.println(liste.get(i).toString());
}
break;
case E: // Beende Programm
System.exit(1);
break;
default :
System.err.println("Fehler");
break;
}
return liste;
}
/** Prueft ob Auto oder Traktor erstellt werden koennen.
*
* @param typ die vom Benutzer getroffene Auswahl.
* [USER=49078]@Return[/USER] true, falls sie gueltig ist.
*/
public static boolean kannErstellen(int typ) {
boolean wirdErstellt = false;
if (typ == 1 || typ == 2) {
wirdErstellt = true;
}
return wirdErstellt;
}
/** Erstellt ein Traktor oder ein Auto.
*
* @param typ ist die Eingabe des Benutzers, welches Vehikel erstellt
* werden soll.
* @param scanner um PS und Kennzeichen einzulesen.
* [USER=49078]@Return[/USER] einen Traktor oder Auto mit gewuenschter PS und Wunsch-
* kennzeichen.
*/
static Vehikel erstelle(int typ, Scanner scanner) {
int gewuenschtePS;
String gewuenschtesKennzeichen;
//IllegalArgumentException fehlerBeiErstellung;
Vehikel erstellung = null; //Um Fehleingabe beim return zu vermeiden.
do {
gewuenschtePS = scanner.nextInt();
gewuenschtesKennzeichen = scanner.nextLine();
} while (psUndKennzeichenCheck(gewuenschtePS,
gewuenschtesKennzeichen));
switch(typ) {
case 1 : // Benutzer waehlte Auto.
erstellung = new Auto(gewuenschtePS, gewuenschtesKennzeichen);
break;
case 2 : // Benutzer will einen Traktor.
erstellung = new Traktor(gewuenschtePS, gewuenschtesKennzeichen);
break;
default :
//throw IllegalArgumentException("Fehler bei der Erstellung!");
break;
}
return erstellung;
}
/** Prueft eingaben auf Korrektheit.
*
* @param gewuenschtePS eingegebene PS
* @param gewuenschtesKennzeichen eingegebenes Kennzeichen
* [USER=49078]@Return[/USER] true, wenn die Eingabe den Anforderungen entspricht.
*/
public static boolean psUndKennzeichenCheck(int gewuenschtePS,
String gewuenschtesKennzeichen) {
boolean eingabeOk = true;
if (gewuenschtePS >= 0 && gewuenschtesKennzeichen != null) {
eingabeOk = false;
}
return eingabeOk;
}
/** Gibt Text aus.
* Methode wurde erstellt um methode dasMenue() zu kuerzen.
*
*/
public static void textAusgeben() {
System.out.println("Geben Sie ein welches Vehikel Sie"
+ " erstellen moechten.");
System.out.println("Geben Sie 1 ein, um ein Auto zu erstellen, "
+ "2 um einen Traktor zu erstellen.");
System.out.println("Bei Fehleingaben werden Sie wieder hier her"
+ " zurueckgefuehrt.");
}
/** Gibt Text aus. Methode wurde erstellt um dasMenue() zu kuerzen.
*
* @param zuEntfernen String des zu Entfernenden Kennzeichens.
*/
public static void nichtGefundenAusgeben(String zuEntfernen) {
System.out.println("Das gesuchte Kennzeichen: "
+ zuEntfernen
+ " wurde nicht gefunden.");
}
}
Zuletzt bearbeitet von einem Moderator: