Do-while循环不起作用

时间:2015-01-07 12:44:34

标签: java loops do-while

我已经创建了下面的代码和一个Do-while循环,可以做一个选择然后再做另一个而不必重新运行程序。问题是我的do-while循环不起作用。当我运行程序时,用户首选工作正常,但程序结束,所以我猜测do-while循环不起作用。

关键是用户不可能离开循环,因为while()中的条件的整数不可能改变。离开程序的唯一方法应该是键入值4。

你能看到do-while循环的问题是什么吗?

    int value = 0;
    int end = 0;

    System.out.println("Välkommen!");

    do
    {       
        value = menu(choice);

        if (value == 1)
        {
            System.out.println();
            System.out.println("Hur mycket vill du sätta in?");

            amount = in.nextInt();

            if ( amount > 0 )
            {           
                makeTransaction(trans, amount);
                System.out.println();
                System.out.println("Du har gjort en insättning på " + amount + " SEK.");
            }

            else if ( amount == 0 )
            {
                System.out.println("Du har ändrat dig, ingen transaktion görs.");
            }

            else if ( amount < 0)
            {
                System.out.println();
                System.out.println("Error, endast positiva heltal är möjliga att mata in! Ingen transaktion görs");
            }
        }

        else if (value == 2)
        {
            System.out.println();
            System.out.println("Hur mycket vill du ta ut?");

            amount = in.nextInt();

            if ( amount > 0 && amount <= balance )
            {

                makeTransaction(trans, amount);
                System.out.println();
                System.out.println("Du har gjort ett uttag på " + (amount * -1) + " SEK.");

            }

            else if ( amount > 0 && amount > balance )
            {
                System.out.println();
                System.out.println("Täckning saknas!");
            }

            else if ( amount == 0 )
            {
                System.out.println();
                System.out.println("Du har ändrat dig, ingen transaktion görs.");
            }

            else if ( amount < 0)
            {
                System.out.println();
                System.out.println("Error, endast positiva heltal är möjliga att mata in! Ingen transaktion görs");
            }
        }

        else if (value == 3)
        {
            balance = IntStream.of(trans).sum();
            showTransactions(trans, balance);
        }

        else if (value == 4)
        {
            System.out.println();
            System.out.print("Tack för idag, glöm inte bankomatkortet!");
            System.exit(0);
        }
    } 
    while (end == 1);

6 个答案:

答案 0 :(得分:3)

而不是:

while (end == 1);

应该是:

while (end == 0);

答案 1 :(得分:3)

让自己轻松一点 - 而不是一劳永逸,只需使用:

while(true) {
    ...
}

答案 2 :(得分:1)

end初始化为0。因此,循环将在第一次迭代后终止。仅当end1(不是{1}}时才会重复循环。

答案 3 :(得分:0)

没有代码设置end等于1,所以同时应检查(end == 0)为:

do {
...
} while (end == 0);

并且还有某处(可能是当你发现错误时)应将结束设置为1,否则,这将是一个无限循环

答案 4 :(得分:0)

如果您希望代码执行至少一次,则可以创建无限的while while循环。

do{

}while(true)

答案 5 :(得分:0)

您唯一的问题是您已将end初始化为0,但您的循环正在检查它是否为1.您可以通过将声明更改为1(int end = 1)或更改循环条件(end == 0)。

正如您所说,变量end永远不会改变。那么问题归结为两种选择。您可以使用do-while循环或while循环。既然你不在乎它是否必须至少执行一次,我会说两者都没问题。但是,如果使用while循环,它会将条件放在第一位,这样可以更容易阅读。

如果你想保持循环,那么在这里没有理由使用end变量,特别是如果它永远不会改变。如前所述,您应该使用:

while (true) {
    ...
}

然后你可以删除end变量: - )