While oder if?

Status
Nicht offen für weitere Antworten.

Sunny81

Aktives Mitglied
Hallo Leute - ich schon wieder.

Würde gerne bei der wahl von default haben dass man wieder waählen muss - sprich wieder in die Switch Abfrage gelangt. Ist das irgendwie möglich?

Danke



[JAVA=42]public class Bestellung


{

public static void main(String args[])
{



int select= IO.promptAndReadInt("Wählen Sie 1 um einen PC zu erstellen!"+
"\nWählen Sie 2 um einen Laptop zu erstellen!\nWählen Sie 3 um zu beenden!\n");

switch(select)

{




case 1:
String prozessor=null;
int ram=0;
int festplatte=0;




while(prozessor==null)
{
prozessor=IO.promptAndReadString("Bitte wählen Sie den Prozessor aus:");
if(!"INTEL".equals(prozessor) && !"AMD".equals(prozessor))
{
prozessor=null;
IO.writeln("Ungültig - Bitte erneut wählen!");
}

else
{
IO.writeln("Erfolgreich hinzugefügt!");
}
}




while(ram==0)
{
ram=IO.promptAndReadInt("Bitte wählen Sie den Arbeitsspeicher aus:");
if(ram<4 || ram>16)
{
ram=0;
IO.writeln("Ungültig - Bitte erneut wählen!");
}

else
{
IO.writeln("Erfolgreich hinzugefügt!");
}
}




while(festplatte==0)
{
festplatte=IO.promptAndReadInt("Bitte wählen Sie die Festplatte aus:");
if(festplatte<160 || festplatte>500)
{
festplatte=0;
IO.writeln("Ungültig - Bitte erneut wählen!");
}

else
{
IO.writeln("Erfolgreich hinzugefügt!");
}
}



Verwaltung o1 = new Verwaltung(prozessor, ram, festplatte);

o1.print();
break;


case 2:

String prozessor2=null;
int ram2=0;
int festplatte2=0;



while(prozessor2==null)
{
IO.promptAndReadString("Bitte wählen Sie den Prozessor aus:");

if(!"INTEL".equals(prozessor2) && !"AMD".equals(prozessor2))
{
prozessor2=null;
IO.writeln("Ungültig - Bitte erneut wählen!");
}

else
{
IO.writeln("Erfolgreich hinzugefügt!");
}
}




while(ram2==0)
{
ram2=IO.promptAndReadInt("Bitte wählen Sie den Arbeitsspeicher aus:");

if(ram2<4 || ram2>16)
{
ram2=0;
IO.writeln("Ungültig - Bitte erneut wählen!");
}

else
{
IO.writeln("Erfolgreich hinzugefügt!");
}
}


festplatte2=IO.promptAndReadInt("Bitte wählen Sie die Festplatte aus:");

while(festplatte2==0)
{
festplatte2=IO.promptAndReadInt("Bitte wählen Sie die Festplatte aus:");

if(festplatte2<160 || festplatte2>500)
{
festplatte2=0;
IO.writeln("Ungültig - Bitte erneut wählen!");
}

else
{
IO.writeln("Erfolgreich hinzugefügt!");
}
}



Verwaltung o2 = new Verwaltung(prozessor2, ram2, festplatte2);

o2.print2();
break;


case 3: IO.writeln("Vielen Dank für Ihren besuch - Auf Wiedersehen!");
break;

default: IO.writeln("Falsche Taste - Bitte erneut wählen.")
break;

}







}
}
}[/code]
 
Zuletzt bearbeitet von einem Moderator:

w0ddes

Bekanntes Mitglied
Also normalerweise geht das ja, wenn man die Methode einfach neu aufruft.
-> Ich glaube (und garantiere nicht für Richtigkeit), dass man bei "default":
Java:
this.main();
einfügen muss. :)
 
S

Spacerat

Gast
Öhm... ja... nicht ist unmöglich, sag ich mal...
Bis auf deinen Code (sorry). Nicht das er nicht rel. gut formatiert wäre... aber diese kaum durchdachte Schachtelung von switch, if und while... da findet sich mit Sicherheit ein besseres Konstrukt. Z.B. das Auslagern der ein oder anderen if-Abfrage und / oder while-Schleife in eine separate Methode...
@Edit: [c]this.main()[/c]? ...[c]main()[/c] ist statisch?...!
 
Zuletzt bearbeitet von einem Moderator:

dngfng

Aktives Mitglied
mach doch einfach eine Whileschleife wie folgt um deine switch Statement.

Java:
	    public static void main(String args[] {
	 
	    boolean redo = true;
	    while(redo) {

            redo=false;

            int select= <input>;
	    
	    switch(select) {
                  ....
                  ....
                default:    System.out.println("Falsche Taste - Bitte erneut wählen.");
	        redo = true;
	        break;
            }
            }

Vor dem while einfach ein boolean auf wahr setzten.
Sofort inerhalb der schleife auf falsch und nur falls der nutzer auf default landen sollte wird der boolean wieder auf wahr gesetzt und die schleife nochmals ausgeführt.
 
Zuletzt bearbeitet:

dngfng

Aktives Mitglied
Besser konsturkte gibt es zu hauf.
z.b.

Java:
int input = 0;
boolean invalidEntry = true;

while(invalidEntry) {
    input = <getInput>
    if(inputValid==true) {
      invalidEntry==false;
    }
}

switch
....
 

dngfng

Aktives Mitglied
Danke schon mal an alle.

@ Spacerat
Hättest du mir ein paar Tips diesbzgl?
Bin noch sehr unerfahren was Java angeht.
merci

Als erstes erst mal all den Code den du im Switch Statement hast in einen separate Methode auslagern.

z.b.


Java:
	    private void createPC() {
	    	
            String prozessor=null;
            int ram=0;
            int festplatte=0;

            while(prozessor==null)
            {
                prozessor=IO.promptAndReadString("Bitte wählen Sie den Prozessor aus:");
                if(!"INTEL".equals(prozessor) && !"AMD".equals(prozessor))
                {
                prozessor=null;
                IO.writeln("Ungültig - Bitte erneut wählen!");
                }
            
                else
                {
                IO.writeln("Erfolgreich hinzugefügt!");
                }
            }
	    	return;
	    }


Und diese dann aus dem Switch Statement aufrufen.
 
S

Spacerat

Gast
...na klar... aber wirlich nur ein Ansatz:D
Java:
public static void main(String[] args)
{
  Bestellung best = null;
  do {
    int select = ... wie es oben steht...

    switch(select) {
    case 1:
      best = createDesktopComputer();
      break;
    case 2:
      best = createLaptopComputer();
      break;
    case 3:
      System.exit(0);
      break;
    default:
      // empty block
    }
  } while(best == null);
}

private static Bestellung createDesktopComputer()
{
  ... usw
}


private static Bestellung createLaptopComputer()
{
  ... usw
}
 
Zuletzt bearbeitet von einem Moderator:

dngfng

Aktives Mitglied
Oh da versteh ich grad nur Bahnhof... :shock:

Dann mal ganz von vorne.

Bevor du überhaupt in den Switch reingehst überprüfst du ob die Eingabe korrekt ist.

Also machst du eine while schleife in der du denn User um eingabe bittest, und bendest diesen nur wenn eine richtige Eingabe gemacht wurde.

Und erst mit dieser korrekten eingabe gehst du überhaup in den Switch.

z.b.

Java:
	    	boolean korrekteEingabe = false;
	    	
	    	int eingabe = 0;
	    	
	    	while(!korrekteEingabe)  {
	    		eingabe = <abfrage der Eingabe>;
	    		
	    		if(eingabe=1||eingabe==2) korrekteEingabe = true;
	    		
	    	}
 

Sunny81

Aktives Mitglied
Also diese 2 Sachen wäre mir nicht ganz klar - Ansonsten verstehe ich es so dass halt anstatt alles in den Switch reinzuschreiben dort nur die Methoden aufgerufen werden. Oder?

do {


System.exit(0);
 

dngfng

Aktives Mitglied
do {
} while(<condition>)


ist eine Schleife - die immer mindestens einmal ausgeführt wird.

Bei

while(<condition>) {}

Muss die Bedingungen ja schon für die erstmalige Ausführung erfüllt sein.

Daher sollte man wenn ein Stück Code mindestens einmal ausgeführt werden soll eine do-while anstatt einer while schleife verwenden.

System.exit
Bei Erreichen des Endes der main-Methode wird das Programm automatisch beendet (außer wenn noch weitere Threads laufen, siehe die Kapitel über Graphische User-Interfaces und über Threads).

Mit System.exit(0); oder System.exit(n); kann man die Applikation vorzeitig beenden.

Bei erfolgreicher Beendigung gibt man als Exit-Code 0 an, bei einer nicht erfolgreichen Beendigung eine positive ganze Zahl als Fehler-Code, im einfachsten Fall den Wert 1.
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Fußgesteuerte while-Schleife nennt man das glaub' ich:
Java:
do {
  // irgendwelche Anweisungen
} while(ereignisNochNichtEingetroffen);
Hier wird die Schleife nicht eher verlassen, bis eine gültige Bestellung getätigt wurde ([c]best != null[/c]) oder das Programm verlassen werden soll (3 -> [c]System.exit(0)[/c]). Die Methoden zum Erstellen der Computer müssen also eine Instanz der Klasse Bestellung zurückgeben.
 
Zuletzt bearbeitet von einem Moderator:

Sunny81

Aktives Mitglied
Könnte mir einer den Code nochmal etwas näher bringen.

private static Bestellung createDesktopComputer();

ist doch eineMethode?
Wo wird die dann ausgeschrieben?
In die gleiche Klasse?

was ist dieses best?
 
S

Spacerat

Gast
...also... Deine Klasse mit der Main-Methode heisst in deinem Beispiel ja Bestellung. Dieses [c]best[/c] soll eine Instanz von Bestellung werden. Die ccreate-Methoden sind weitere statische Methoden der Klasse Bestellung (deswegen ist der Code auch nicht all zu toll ;)). In diesen werden nun die jeweiligen PCs erstellt (was vorher in deinen verschachtelten while-Konstrukten passiert ist). Wurde der PC erfolgreich erstellt, verlässt man die Methoden jeweils mit [c]return new Bestellung();[/c]. Soll die Bestellung abgebrochen werden, verlässt man die Methode halt mit [c]return null;[/c].
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
DrahtEck Arrays und While-Loop Java Basics - Anfänger-Themen 50
C Erste Schritte While-Schleife Java Basics - Anfänger-Themen 3
M While-Schleife mit Wartezeit Java Basics - Anfänger-Themen 15
Ranger229 Endless loop in while Schleife Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
Ostkreuz While Schleife neustarten Java Basics - Anfänger-Themen 20
S Erste Schritte do-while Schleife Münzwurf Java Basics - Anfänger-Themen 1
S while Schleife Taschenrechner Java Basics - Anfänger-Themen 1
P Best Practice While loop schleife Java Basics - Anfänger-Themen 5
S Erste Schritte While Schleifen Java Basics - Anfänger-Themen 11
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
R do while Schleife Verständnisfrage Java Basics - Anfänger-Themen 2
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
Say do-While Code Ausführung Java Basics - Anfänger-Themen 3
Say do-while Syntak Java Basics - Anfänger-Themen 3
G Return in While Schleife Java Basics - Anfänger-Themen 6
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
J do..while Schleife Java Basics - Anfänger-Themen 14
W Wiederkehrende Konsolen-Anzeige mit do-While?! Java Basics - Anfänger-Themen 33
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
java-starter Erste Schritte Mit While Schleifen Programme schreiben Java Basics - Anfänger-Themen 4
berserkerdq2 Brauche ich while != -1, wenn ich immer einen BufferedReader verwende? Java Basics - Anfänger-Themen 8
B Zuweisungen und Methodenaufrufe in Bedingung der while Schleife? Java Basics - Anfänger-Themen 2
JavaBeginner22 Würfeln bis 6 while Schleife Java Basics - Anfänger-Themen 13
G while.next() Verständnisfrage Java Basics - Anfänger-Themen 16
L while Schleife mit 2 Bedingung endet nicht Java Basics - Anfänger-Themen 3
D Array mit while-schleife Java Basics - Anfänger-Themen 12
B do while Schleife Java Basics - Anfänger-Themen 3
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
SergioCK Do while Schleife wiederholen Java Basics - Anfänger-Themen 14
Informatikf Methoden While Schleife Java Basics - Anfänger-Themen 3
M While Schleife? Java Basics - Anfänger-Themen 4
C Sind die while-Schleifen richtig in for-Schleifen ersetzt worden? Java Basics - Anfänger-Themen 8
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
Zwanglos Warum wird nur die erste Zeile im while Block ausgeführt? Java Basics - Anfänger-Themen 8
M Wie kann ich Werte die in einer While Schleife sind weiter genutzt werden? Java Basics - Anfänger-Themen 7
H Kann eine while-Schleife ein Programm blockieren? Java Basics - Anfänger-Themen 8
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
A Wie schaffe ich das eine while Schleife addiert danach subtrahirt? Java Basics - Anfänger-Themen 1
Aeon Erste Schritte Preise berechnen mit do-while Java Basics - Anfänger-Themen 9
J for /while Schleife Java Basics - Anfänger-Themen 5
A While Schleife - buubelsort methode Java Basics - Anfänger-Themen 2
J Wie kann ich hier eine While schleife einbauen? Java Basics - Anfänger-Themen 3
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
M While-Schleifen-Fehler Java Basics - Anfänger-Themen 4
S Do-While-Schleife Java Basics - Anfänger-Themen 2
S While Schleife Java Basics - Anfänger-Themen 4
S Do-While Schleife Java Basics - Anfänger-Themen 6
J Von While zu for Java Basics - Anfänger-Themen 42
G While/If Programm Java Basics - Anfänger-Themen 2
L String in Do-While-Schleife Abbruchkriterium Java Basics - Anfänger-Themen 1
CptK Methoden While-Schleife so lange ausführen, wie Methode etwas zurückgibt Java Basics - Anfänger-Themen 2
G Flussdiagramm-Do while Java Basics - Anfänger-Themen 4
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
B Verschachtelung von For-Schleife in While Schleife Java Basics - Anfänger-Themen 14
G while schleife Java Basics - Anfänger-Themen 11
G while schleife mit array Java Basics - Anfänger-Themen 12
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
I Do-While / Kalkulator / Bitte um Hilfe Java Basics - Anfänger-Themen 9
G While schleife Java Basics - Anfänger-Themen 2
mor16Euro Erste Schritte Wie nennt man eine While oder For schleife die nie Ausgeführt wird Java Basics - Anfänger-Themen 5
C Verständnisfrage bezüglich der Do-While Schleife Java Basics - Anfänger-Themen 9
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
N while Schleife wird nicht beendet, obwohl Sie hätte breaken sollen Java Basics - Anfänger-Themen 4
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
O Erste Schritte Zahlendreieck mit While Java Basics - Anfänger-Themen 2
D Break Sprungmarken Problem einer While True in While True Java Basics - Anfänger-Themen 6
A Erste Schritte while-Schleife Java Basics - Anfänger-Themen 38
W While-Loop unterbrechen Java Basics - Anfänger-Themen 4
X While Do schleife funtioniert nicht Java Basics - Anfänger-Themen 5
J 2 "while"-Anweisungen in einer do-Schleife? Java Basics - Anfänger-Themen 4
W while Schleife und Bedingung Java Basics - Anfänger-Themen 11
T While Schleife funktioniert nicht Java Basics - Anfänger-Themen 14
J Input/Output Strings aneinander reihen mit while schleife Java Basics - Anfänger-Themen 25
M Methoden while liefert nur den ersten Datensatz Java Basics - Anfänger-Themen 12
S Try-Catch in Verwendung einer while Schleife Java Basics - Anfänger-Themen 2
P a cannot be resolved bei einer do while Schleife Java Basics - Anfänger-Themen 1
J While Schleife Java Basics - Anfänger-Themen 19
S While-Schleifen Ausgabe als String? Java Basics - Anfänger-Themen 1
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
Z Return in While-Schleife Java Basics - Anfänger-Themen 7
N Methode mit While-Schleife und If-Bedingung und Array-Initialisierung Java Basics - Anfänger-Themen 4
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
helldunkel While Schleife trotz false Java Basics - Anfänger-Themen 4
E Threads Thread in While-Schleife nur einmal starten Java Basics - Anfänger-Themen 2
M Erste Schritte while boolean=false läuft nur bei true??? Java Basics - Anfänger-Themen 23
R While-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 24
b1ck while-Schleife Java Basics - Anfänger-Themen 10
b1ck Integer initialisieren bei do-while-Schleife Java Basics - Anfänger-Themen 11
kilopack15 DoWhile-Schleife als While-Schleife darstellen Java Basics - Anfänger-Themen 9
A While-Schleife funktioniert nicht! Java Basics - Anfänger-Themen 33
A Verständnisproblem Ausgabe Do-While-Schleife Java Basics - Anfänger-Themen 3
E Alphabet mit einer while Schleife ausgeben Java Basics - Anfänger-Themen 3
I Mehre While-Schleifen hintereinander Java Basics - Anfänger-Themen 13
T while schleife starten , beeneden und wieder Starten Java Basics - Anfänger-Themen 8
W Verständnis Probleme bei der while-Schleife und continue Java Basics - Anfänger-Themen 21
F Reached end while parsing Java Basics - Anfänger-Themen 6
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
$ Multiplikations-Rechner mit while Schleife Java Basics - Anfänger-Themen 8

Ähnliche Java Themen


Oben