首页 > 解决方案 > Java 方法没有第二次执行

问题描述

我希望你能帮我解决这个问题。

我写了一个代码来创建一个数据库。为此,我创建了一个方法,该方法使用 Scanner 来存储用户输入,最后使用简单的 println 来显示输入是什么。这一切都很好。

但是,当我想第二次执行该方法时,我不再被要求提供另一个输入。它只是再次打印之前给出的相同输入。

我的代码包含方法和打印行:

datenErfassen();    
System.out.println(g + " " + t + " " + n + " " + v + " " + s + " " + h + " " + p + " " + o);
datenErfassen();    
System.out.println(g + " " + t + " " + n + " " + v + " " + s + " " + h + " " + p + " " + o);

这就是输出:

Gib dein Geschlecht ein. (weiblich/männlich)
weiblch
Gib den Titel ein.
Student
Gib den Nachnamen ein.
Müller
Gib den Vornamen ein.
Lisa
Gib die Strasse ein.
Rosenstr
Gib deine Hausnummer ein.
34
Gib deine Postleizahl ein.
76543
Gib den Ort ein.
München
weiblch Student Müller Lisa Rosenstr 34 76543 München
weiblch Student Müller Lisa Rosenstr 34 76543 München

第二种方法只是被忽略了。为什么我不能输入其他人的数据?我的猜测是,它与inputGeschlechtError我在方法中创建的布尔值有关。我这样做了,所以我可以循环代码以请求另一个输入,如果数据不符合指南,比如有限的字符:

while (inputGeschlechtError) {
    try {
        System.out.println("Gib dein Geschlecht ein. (weiblich/männlich)");
        eingabeGeschlecht = new Scanner(System.in);
        g = eingabeGeschlecht.nextLine();
        inputGeschlechtError = (String.valueOf(g).length() > 8);
    } catch (NumberFormatException e) {
        inputGeschlechtError = true;
    }
    if (inputGeschlechtError) {
        System.out.println(
        "Fehler: Die Eingabe darf maximal 8 Zeichen haben. Bitte gib `männlich` oder `weiblich` ein.");
    }
}

我试图解决问题,将布尔值设置为 false 并将其放置在代码中的任何可能位置,我尝试使用scanner.reset() 方法,但这并没有改变任何东西。

请告诉我,如果已经有答案,我还没有找到答案。

编辑:

这是我的更多代码以便更好地理解。该datenErfassen方法包含每个问题一种方法。这些都具有相同的结构:

public static void datenErfassen(){
    geschlechtErfassen(g);
    titelErfassen(t);
    nameErfassen(n);
    vornameErfassen(v);
    strasseErfassen(s);
    hausnummerErfassen(h);
    plzErfassen(p);
    ortErfassen(o);
    
}

public static void geschlechtErfassen(String geschlecht) {
    while (inputGeschlechtError) {
        try {
            System.out.println("Gib dein Geschlecht ein. (weiblich/männlich)");
            eingabeGeschlecht = new Scanner(System.in);
            g = eingabeGeschlecht.nextLine();
                inputGeschlechtError = (String.valueOf(g).length() > 8);
        } catch (NumberFormatException e) {
            inputGeschlechtError = true;
        }
        if (inputGeschlechtError) {
            System.out.println(
            "Fehler: Die Eingabe darf maximal 8 Zeichen haben. Bitte gib `männlich` oder `weiblich` ein.");
        }
    }
}

public static void titelErfassen(String titel) {
    while (inputTitelError) {
        try {
            System.out.println("Gib den Titel ein.");
            Scanner eingabeTitel = new Scanner(System.in);
            t = eingabeTitel.nextLine();
            inputTitelError = (String.valueOf(t).length() > 10);
        } catch (NumberFormatException e) {
            inputTitelError = true;
        }
        if (inputTitelError) {
            System.out.println("Fehler: Die Eingabe darf maximal 10 Zeichen haben.");
        }
    }
}

public static void nameErfassen(String name) {
    while (inputNameError) {
        try {
            System.out.println("Gib den Nachnamen ein.");
            Scanner eingabeName = new Scanner(System.in);
            n = eingabeName.nextLine();
            inputNameError = (String.valueOf(n).length() > 25);
        } catch (NumberFormatException e) {
            inputNameError = true;
        }
        if (inputNameError) {
            System.out.println("Fehler: Die Eingabe darf maximal 25 Zeichen haben.");
        }
    }
}

public static void vornameErfassen(String vorname) {
    while (inputVornameError) {
        try {
            System.out.println("Gib den Vornamen ein.");
            Scanner eingabeVorname = new Scanner(System.in);
            v = eingabeVorname.nextLine();
            inputVornameError = (String.valueOf(v).length() > 25);
        } catch (NumberFormatException e) {
            inputVornameError = true;
        }
        if (inputVornameError) {
            System.out.println("Fehler: Die Eingabe darf maximal 25 Zeichen haben.");
        }
    }
}

public static void strasseErfassen(String strasse) {
    while (inputStrasseError) {
        try {
            System.out.println("Gib die Strasse ein.");
            Scanner eingabeStrasse = new Scanner(System.in);
            s = eingabeStrasse.nextLine();
            inputStrasseError = (String.valueOf(s).length() > 25);
        } catch (NumberFormatException e) {
            inputStrasseError = true;
        }
        if (inputStrasseError) {
            System.out.println("Fehler: Die Eingabe darf maximal 25 Zeichen haben.");
        }
    }
}

public static void hausnummerErfassen(String hausnummer) {
    while (inputHausnummerError) {
        try {
            System.out.println("Gib deine Hausnummer ein.");
            Scanner eingabeHausnummer = new Scanner(System.in);
            h = eingabeHausnummer.nextLine();
            inputHausnummerError = (String.valueOf(h).length() > 5);
        } catch (NumberFormatException e) {
            inputHausnummerError = true;
        }
        if (inputHausnummerError) {
            System.out.println("Fehler: Die Eingabe darf maximal 5 Zeichen haben.");
        }
    }
}

public static void plzErfassen(int plz) {
    while (inputPlzError) {
        try {
            System.out.println("Gib deine Postleizahl ein.");
            Scanner eingabePlz = new Scanner(System.in);
            try {
                p = eingabePlz.nextInt();
            } catch (Exception e) {
                System.out.println("Die Eingabe ist ungültig. Bitte gib eine Zahl an." + e.toString());
                System.out.println("Gib deine Postleizahl ein.");                                       
                Scanner eingabePlz2 = new Scanner(System.in);
                p = eingabePlz.nextInt();
            }
            inputPlzError = (String.valueOf(p).length() > 5);
        } catch (NumberFormatException e) {
            inputPlzError = true;
        }
        if (inputPlzError) {
            System.out.println("Fehler: Die Eingabe darf maximal 5 Zeichen haben.");
        }
    }
}

public static void ortErfassen(String ort) {
    while (inputOrtError) {
        try {
            System.out.println("Gib den Ort ein.");
            Scanner eingabeOrt = new Scanner(System.in);
            o = eingabeOrt.nextLine();
            inputOrtError = (String.valueOf(o).length() > 25);
        } catch (NumberFormatException e) {
            inputOrtError = true;
        }
        if (inputOrtError) {
            System.out.println("Fehler: Die Eingabe darf maximal 25 Zeichen haben.");
        }
    }
}

标签: javaloopsinputmethodsjava.util.scanner

解决方案


推荐阅读