Java do-while-Schleife, für Programm neustart

Lars84

unregistriert
Thread Starter
Dabei seit
14.09.2005
Beiträge
235
Reaktionspunkte
1
Hi ich bin am verzweifeln,
mach ne ausbildung zum fachinfo und hab jetzt in der schule java.
hab vorher leider nie was programmiert und muss morgen also heute ;) eine hausaufgabe vor der klasse vorführen.
wir haben ein programm geschrieben (paketrechner) und nun soll man nachdem das programm durchgelaufen ist gefragt werden, ob man es noch einmal starten möchte also ein neues paket berechnen will.
ich hab ewig rum probiert und komm einfach auf keine lösung
wär echt toll wenn mir jemand helfen könnte.

falls was bring hier kurz eine auszug aus dem quellcode:

package kontrollstruktur;
import java.util.Scanner;
public class Paketrechner_final {
public static void main(String[] args) {
int gewicht = 0;
String form;
double summe = 0.0;

System.out.println("\t\tP a k e t r e c h n e r");
System.out.println("Geben Sie das Gewicht des Paketes ein:");

Scanner sc = new Scanner(System.in);
gewicht = sc.nextInt();

if(gewicht > 0 && gewicht <= 2) {
summe = 3.90;
}
else {
if(gewicht >= 3 && gewicht <= 10) {
summe = 5.90;
}
else {
if(gewicht >= 11 && gewicht <= 20) {
summe = 8.90;
}
else {
if (gewicht >= 21 && gewicht <= 32) {
summe = 12.90;
}
else {
if(gewicht > 32) {
System.out.println("Das Paket ist zu schwer!");
return;
}
else {
System.out.println("Sie haben 0 oder ein negatives Gewicht eingegeben.");
return;
}
}
}
}
}
System.out.println("Form Quader oder Rolle (Q/R)?");
form = sc.next();
if(form.equals("R") || form.equals("r")) {
summe = summe + 1.50;
}
System.out.println("Der Preis betr‰gt: " + summe + " Euro");
}
}


und wenn irgendjemand noch einen guten link oder so kenn wo java mal von grund auf erklärt wird wär ich sehr dankbar; dann erledigen sich solche fragen in zukunft von ganz allein :D
vielen dank
 
kann man methoden nicht auch in sich selbst nocheinmal starten? das hab ich zwar noch nicht in der schule, hat mein info-lehrer aber mal öfters von gesprochen..
denn dann könntest du am ende ja einfach ne if-abfrage machen und bei der richtigen eingabe die methode nochmal starten...
ansonsten würd mir das noch einfallen:

du packst das alles in eine while-schleife, die läuft solang eine variable auf 1 oder true steht. am ende (und wohl auch logischerweise am anfang, das ist das einzig doofe) der methode machst du dann ne abfrage, in der die variable dann auf 1 oder 0 oder ähnlliches gesetzt wird, wenn man das programm nochmal starten will..verstehst was ich mein?
 
wow danke für die schnelle antwort zu so später stunde.
also das, dass die schleife schon am anfang beginnen muss hab ich kapiert.
mein problem ist, dass ich den anfang voll verpennt hab und so von java nicht wirklich ne ahnung hab. wenn ich den code seh, versteh ichs schon aber von alleine komm ich nicht drauf.
für diese hausaufgabe sollen wir jetzt ausdrücklich die do-while schleife verwenden.
aber ich habs nach stundelangem umprobieren immer noch nicht raus.
deswegen wär ich um eine musterlösung im moment sehr froh. ich versprech auch mehr zu lernen, so dass solche fragen nicht mehr stellen brauche :D
 
do-while? ist das ganz normal so mit while (<bedingung>) { <code> } ?

hmm für ne musterlösung hab ich glaub ich auch zu wenig ahnung :( sorry..^^ mir gehts in info ähnlich wie dir..den code versteh ich (zumindest die groben teile) aber selbst drauf kommen..fehlanzeige..
sorry, kann dir da nicht weiter helfen..

oh gott ich muss ins bett schreib doch morgen klausur :D gute nacht
 
trotzdem danke
wenn sich noch jemand berufen fühlt, einem armen schüler :) zu ner guten note zu verhelfen, dann immer her damit.
hab jetzt auch schon selber einen ansatz enwickelt aber glaub dass noch etwas fehlt
...
package kontrollstruktur;
import java.util.Scanner;
public class Paketrechner_final {
public static void main(String[] args) {
int gewicht = 0;
String form;
double summe = 0.0;
boolean x = Ja
do {
...
//hier kommt dann der text fürs eigentliche "Programm"
...
System.out.println("Der Preis betr‰gt: " + summe + " Euro");
}
System.out.println("Möchten Sie noch einen Preis berechnen?");
x = sc.nextInt();
} while (x = Ja);
}

also wenn ich mich nicht ganz täusche, hab ich einen fehler oben da wo boolean steht und unten fehlt auch noch der zündfunke
wär echt toll wenn sich noch jemand erbarmen würde und mir hilft
ich muss ins bett muss ja morgen früh raus ;)
danke
 
Zuletzt bearbeitet:
Bin zwar auch kein Java Fachmann aber du könntest eine globale Variable nehmen in der du z.B. (J oder N) einträgst. Standardmäßig würde der meinetwegen auf J für nochmal eingeben gesetzt!
Dann packst du den ganzen Code zwischen "Int gewicht = 0" und deinem letzten Print-Out in einen do {} while block und gibst als Bedingung zum überprüfen den String an (String.CompareTo(J) == 0) oder so ähnlich.
Müsste eigentlich funktionieren so spontan gesehen..vielleicht nicht toll aber naja..
 
Hmm spontan könnte es auch sein dass es funzt wenn du aus einem X einen Integer machst und beim while meinetwegen auf 1 prüfst für "Ja" quasi?!

Außerdem würde ich glaub ich deine vorderen Variablen Deklarationen noch mit in den Do{} Part mit einbauen damit du jede runde mit frischen leeren Variablen beginnst und dein X auf 0 setzen zu Anfang...

Und zum üben fand ich diese Seite eigentlich nicht verkehrt..gleich mit beispielen:

http://www.w3schools.com/js/default.asp
 
Zuletzt bearbeitet:
Moin!

Eine sehr gute Erklärung zu Java gibt es gratis zum Download bei Galileo: Java ist (auch) einen Insel

http://www.galileocomputing.de/openbook/javainsel7/

Ansonsten was Dein Problem betrifft: ich würde die Logiken trennen und den Rechner als eigene Klasse implementieren:

Code:
import java.util.Scanner;

public class Paketrechner_final {
    
    public int gewicht = 0;
    public String form;
    public double summe = 0.0;
    
    public Paketrechner_final() {
        System.out.println("\t\tP a k e t r e c h n e r");
    }
    
    public void calculate() {
        System.out.println("Geben Sie das Gewicht des Paketes ein:");
        Scanner sc = new Scanner(System.in);
        gewicht = sc.nextInt();
        [...]
    }
    
    public static void main(String[] args) {
        String repeat = "N";
        do {
            Paketrechner_final prf = new Paketrechner_final();
            prf.calculate();
            System.out.println("Nochmal (Y/N)?");
            Scanner sc = new Scanner(System.in);
            repeat = sc.next();
        } while (repeat.equals("Y"));
    }
}

Schön ist das aber auch noch nicht, denn der Ansatz wäre sauberer, wenn die Erfassung der Daten und die Ermittlung des Ergebnisses voneinander getrennt wären. Das Stichwort an dieser Stelle ist Model-View-Controller (http://de.wikipedia.org/wiki/Model_View_Controller).

Viele Grüsse
Christian
 
Zuletzt bearbeitet:
Zurück
Oben Unten