java - 这个 do/while 循环无缘无故地重复,如何解决?

标签 java loops error-handling while-loop do-while

我正在尝试做一个假信用卡生成器。所以基本上问题是,当用户说“否”时,程序会继续并显示“再见”,但随后又会重新开始并且找不到原因。

我想将所有这些 do/while 循环放入一个 for 循环中,这样我就可以在最后放置一个中断,但这导致了死代码(这是合乎逻辑的)。

public void generateCode() {
    char userAnswer;
    Scanner sc = new Scanner(System.in);

    do {
        System.out.println("Put a bin.");            
        String binGiven = sc.nextLine();

        verificationBin(); 
        showCardNumber();

        do {

            System.out.println("Do u wanna try again ? (Yes/No)");
            userAnswer = sc.nextLine().charAt(0);

        } while (userAnswer != 'Y' && userAnswer != 'N');

    } while (userAnswer == 'Y');

    System.out.println("Goodbye");
    sc.close();

}

我原以为它会在用户说“不”时停止,但它又重新开始

最佳答案

根据您添加的图像,您正在调用循环代码两次。一次来自您的构造函数,一次来自您的 main .

这是您当前的代码:

Generator gen = new Generator();
gen.generateCode();

但是,您的构造函数 generator 内类包含对相同方法的调用 generateCode()此处显示:

this.generateCode();

当您使用new Generator()时这也会运行构造函数内部的代码,因此您将运行相同的代码两次。您可以通过尝试运行该程序两次来确认这一点,第二次后它应该停止执行。

删除this.generateCode()因为这实际上并不是应该从构造函数运行的代码。

关于java - 这个 do/while 循环无缘无故地重复,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57380973/

相关文章:

java - 在 Java 中跳出 while 循环

c# - 如何根据解决方案配置(发布或调试)让 NLog 输出到不同的目标?

error-handling - Silex - 如何将请求 $request 传递给 $app->error(function (\Exception $e, $code) use ($app) {

java - Maven 继承不适用于pluginManagement

java - 登录 Java 8 可选

java - TextField 右对齐文本

python - Pandas read.csv 创建元组

java - 如何等待 TextView 中的特定字符串继续执行下一个方法

r - 如何在 R 中创建迭代 lm() 公式

javascript - NodeJS - Events.js 无法读取未定义的每个属性