我已经创建了下面的代码和一个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);
答案 0 :(得分:3)
而不是:
while (end == 1);
应该是:
while (end == 0);
答案 1 :(得分:3)
让自己轻松一点 - 而不是一劳永逸,只需使用:
while(true) {
...
}
答案 2 :(得分:1)
end
初始化为0
。因此,循环将在第一次迭代后终止。仅当end
为1
(不是{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
变量: - )