Java如果子句再次显示以前的输入

huangapple 未分类评论59阅读模式
英文:

Java shows previous if clauses input again

问题

这是我的主类:

package com.company;

import java.util.*;
import java.lang.String;

public class Main {

    public static int menu = 0;

    public static void main(String[] args) {
        // write your code here
        //boolean listeda= false

        System.out.println("Geben Sie ihre gewünschte Maximalmenge an Stylisten und Klienten an. (1.Stylist; 2.Client)");
        Scanner in1 = new Scanner(System.in);
        int z1 = in1.nextInt();
        int z2 = in1.nextInt();
        PersonData db = new PersonData(z1, z2);
        System.out.println("Ihre Datensätze können bis zu " + z1 + " Stylisten und " + z2 + " Klienten enthalten.");
        System.out.println();

        System.out.println("Geben Sie ihre gewünschte Maximalmenge Terminen. (abhängig von ihren Speicherkapazitäten)");
        Scanner in2 = new Scanner(System.in);
        int z3 = in2.nextInt();
        AppointmentData adb = new AppointmentData(z3);
        System.out.println("Ihre Datensätze können bis zu " + z3 + " Einträge enthalten.");
        System.out.println();

        int menu = Menu();
        while (menu != 99) {

            if (menu == 0)
                menu = Menu();

            else if (menu == 1) {
                System.out.println("1");
                System.out.println();
            }

            else if (menu == 2) {
                //printMap(list); //Apointment get all Entries
                System.out.println("2");
                System.out.println();
                menu = Menu();
            } else if (menu == 3) {
                System.out.println("Geben Sie ihre gewünschte Maximalmenge Terminen. (abhängig von ihren Speicherkapazitäten)");
                Scanner in = new Scanner(System.in);
                //int a = in.nextInt();
                db.insertStylist("Chanti", "Mueller", "c.mueller@mail.de", 123123, "cut", "wash");
                System.out.println("Ihre Datensätze können bis zu " + in.nextInt() + " Einträge enthalten.");
                System.out.println();
                menu = Menu();
            } else if (menu == 4) {

            } else if (menu == 5) {
                System.out.println("Geben Sie ihren gewünschten Termin an. (day, month, year, hour, min, service(s))");
                Scanner in = new Scanner(System.in);
                int a = in.nextInt();
                int b = in.nextInt();
                int c = in.nextInt();
                int d = in.nextInt();
                int e = in.nextInt();
            } else if (menu == 6) {

            }

            menu = Menu();

        }
        System.exit(0);
    }

    public static int Menu() { //Menü mit Auswahlmöglichkeiten

        System.out.println("menu=" + menu);

        System.out.println();
        System.out.println("Terminplaner (Zahl eintragen)");
        System.out.println();
        System.out.println("[1] Neuen Termin anlegen");
        System.out.println("[2] Termine anzeigen lassen");
        System.out.println("[3] Stylist eintragen und anzeigen lassen");
        System.out.println("[4] Client eintragen und anzeigen lassen");
        System.out.println("[5] Termin eintragen und anzeigen lassen");
        System.out.println("[99] Programm beenden");

        Scanner in = new Scanner(System.in);

        switch (in.nextInt()) {
            case 1:
                System.out.println("Neuer Termin:");
                menu = 1;
                return menu;
            case 2:
                System.out.println("Termine");
                menu = 2;
                return menu;
            case 3:
                System.out.println("Datenliste für Stylisten und Klienten serialisieren.");
                menu = 3;
                return menu;
            case 4:
                System.out.println("Datenliste für Termine serialisieren.");
                menu = 4;
                return menu;
            case 5:
                System.out.println("Datenliste für Termine serialisieren.");
                menu = 5;
                return menu;
            case 99:
                System.out.println("Planer wird geschlossen");
                System.exit(0);
                menu = 99;
                return menu;
            default:
                System.err.println("Falsche Eingabe");
                return menu;
        }

    }
}

如果我输入1,程序会进入正确的路径,但如果之后我输入3,程序只会执行选项3的文本,然后再次打印选项1。我该如何修复这个问题?

我知道我需要在if语句之前再次进入while循环,但不知何故我的代码似乎又回到了已经触发的先前if子句中。

英文:

This is my Main class:

package com.company;

import java.util.*;
import java.lang.String;

public class Main {

	public static int menu = 0;
	
    public static void main(String[] args) {
	// write your code here
        //boolean listeda= false

        System.out.println("Geben Sie ihre gewünschte Maximalmenge an Stylisten und Klienten an. (1.Stylist; 2.Client)");
        Scanner in1 = new Scanner(System.in);
        int z1 = in1.nextInt();
        int z2 = in1.nextInt();
        PersonData db = new PersonData(z1, z2);
        System.out.println("Ihre Datensätze können bis zu "+z1+" Stylisten und "+z2+" Klienten enthalten.");
        System.out.println();

        System.out.println("Geben Sie ihre gewünschte Maximalmenge Terminen. (abhängig von ihren Speicherkapazitäten)");
        Scanner in2 = new Scanner(System.in);
        int z3 = in2.nextInt();
        AppointmentData adb = new AppointmentData(z3);
        System.out.println("Ihre Datensätze können bis zu "+z3+" Einträge enthalten.");
        System.out.println();

        int menu = Menu();
        while(menu != 99) {

        	if(menu == 0) Menu();
        	
        	else if (menu == 1) {
                System.out.println("1");
                System.out.println();
            }

            else if (menu == 2) {
                //printMap(list); //Apointment get all Entries
                System.out.println("2");
                System.out.println();
                Menu();
            }
            else if (menu == 3){
                System.out.println("Geben Sie ihre gewünschte Maximalmenge Terminen. (abhängig von ihren Speicherkapazitäten)");
                Scanner in = new Scanner(System.in);
                //int a = in.nextInt();
                db.insertStylist("Chanti", "Mueller", "c.mueller@mail.de", 123123, "cut", "wash");
                System.out.println("Ihre Datensätze können bis zu "+in.nextInt()+" Einträge enthalten.");
                System.out.println();
            }
            else if (menu == 4){

            }
            else if (menu == 5){
                System.out.println("Geben Sie ihren gewünschten Termin an. (day, month, year, hour, min, service(s))");
                Scanner in = new Scanner(System.in);
                int a = in.nextInt();
                int b = in.nextInt();
                int c = in.nextInt();
                int d = in.nextInt();
                int e = in.nextInt();
            }
            else if (menu == 6){
            }
        	
        	Menu();

        }
        System.exit(0);
    }

    
    public static int Menu(){ //Menü mit Auswahlmöglichkeiten
    	
    	System.out.println("menu="+menu);
    	
        System.out.println();
        System.out.println("Terminplaner (Zahl eintragen)");
        System.out.println();
        System.out.println("[1] Neuen Termin anlegen");
        System.out.println("[2] Termine anzeigen lassen");
        System.out.println("[3] Stylist eintragen und anzeigen lassen");
        System.out.println("[4] Client eintragen und anzeigen lassen");
        System.out.println("[5] Termin eintragen und anzeigen lassen");
        System.out.println("[99] Programm beenden");

        Scanner in = new Scanner(System.in);

        switch(in.nextInt()) {
            case 1:
                System.out.println("Neuer Termin:");
                menu = 1;
                return menu;
            case 2:
                System.out.println("Termine");
                menu = 2;
                return menu;
            case 3:
                System.out.println("Datenliste für Stylisten und Klienten serialisieren.");
                menu = 3;
                return menu;
            case 4:
                System.out.println("Datenliste für Termine serialisieren.");
                menu = 4;
                return menu;
            case 5:
                System.out.println("Datenliste für Termine serialisieren.");
                menu = 5;
                return menu;
            case 99:
                System.out.println("Planer wird geschlossen");
                System.exit(0);
                menu = 99;
                return menu;
            default:
                System.err.println("Falsche Eingabe");
                Menu();
                return menu;
        }

    }
}

And if I enter 1 for example the program enters the right way, but if I put 3 afterwards the program does only the text for option 3 and then prints option 1 again. How do I fix this?

I know that I need to enter the while loop again before the if statements but somehow my code seems to go back into the previous if clauses that were already triggered.

huangapple
  • 本文由 发表于 2020年7月28日 23:23:50
  • 转载请务必保留本文链接:https://java.coder-hub.com/63137612.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定