Problem do while Schleife und Scanner

Frekuensi

Neues Mitglied
Hallo, ich probiere gerade etwas herum und wundere mich gerade warum das Programm nach dem vollständigen Durchlauf immer terminiert, egal ob man mit y oder n auf die Frage "Nochmal?" antwortet. Kann mir jemand einen Tipp geben warum das nicht funktioniert?

MfG Frekuensi

Java:
package wurzel;
import java.util.Scanner;
public class Wurzel_berechnen {

   
    public static double eingabe1() {
        Scanner sc = new Scanner(System.in);
        System.out.println("Widerstand:");
        double wert1 = sc.nextDouble();
        return wert1;
    }
    public static double eingabe2() {
        Scanner sc2 = new Scanner(System.in);
        System.out.println("Belastbarkeit:");
        double wert2 = sc2.nextDouble();
        return wert2;
    }
    public static double berechnenu (double wert1, double wert2) {
        double ergebnis;
        ergebnis = Math.sqrt((wert1*wert2));
        return ergebnis;
    }
    public static double berechneni (double wert1, double wert2) {
        double ergebnis;
        ergebnis = Math.sqrt((wert2/wert1));
        return ergebnis;
    }
   
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner no = new Scanner(System.in);
        do{
           
            System.out.println("Herzlich Willkommen!");
            System.out.println("Für Umax drücken sie die 1");
            System.out.println("Für Imax drücken sie die 2");
            System.out.println("Zum Beenden die 3");
            Scanner qu = new Scanner(System.in);
            System.out.println("Wahl:");
            int frage = qu.nextInt();
   
                    switch (frage) {
                   
                    case 1:
                        double w1 = Wurzel_berechnen.eingabe1();
                        double w2 = Wurzel_berechnen.eingabe2();
                        System.out.println((Wurzel_berechnen.berechnenu(w1, w2)));
                        break;
                    case 2:
                        double w3 = Wurzel_berechnen.eingabe1();
                        double w4 = Wurzel_berechnen.eingabe2();
                        System.out.println((Wurzel_berechnen.berechneni(w3, w4)));
                        break;
                    case 3:
                        System.exit(0);
                        break;
                    default:
                        System.out.println("Das war weder 1, noch 2, noch 3");
                    }
                   
            System.out.println("Nochmal?y/n:");
            String nochmal = no.next();

            if(nochmal.equals("y")){
                continue;
            }else
                {
                    if(nochmal.equals("n")){
                    System.exit(0);
                    }
                }

        }while(no.equals("y"));

    }


}
 
Du führst das Programm mindestens einmal aus und dann solange wie no.equals("y").
no ist dein Scanner-Objekt und das wird nie equal mit dem Buchstaben "y" sein.

Deklarier deinen String "nochmal" unter deinem Scanner und ändere die while-Bedingung in:
Java:
while(nochmal.equals("y"))
 
Ahhhh natürlich, vielen Dank!
Die geänderten Stellen:
Java:
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner no = new Scanner(System.in);
        String nochmal;
        do{
Java:
            System.out.println("Nochmal?y/n:");
            nochmal = no.next();
            if(nochmal.equals("y")){
Java:
        }while(nochmal.equals("y"));
 

Zurück
Oben