在Java中减去循环中的变量
我试图计算一个玩家可以用固定金额玩乐透和小丑游戏的回合数在Java中减去循环中的变量,java,loops,Java,Loops,我试图计算一个玩家可以用固定金额玩乐透和小丑游戏的回合数 public static void example () { int money = 200; int lottoCost = 4; int jokerCost = 3; int costTogether = lottoCost+jokerCost; int rounds = 0; for (int i = money; i <= 0; rounds++) { mo
public static void example () {
int money = 200;
int lottoCost = 4;
int jokerCost = 3;
int costTogether = lottoCost+jokerCost;
int rounds = 0;
for (int i = money; i <= 0; rounds++) {
money = money-costTogether;
}
System.out.println("With " + money + " euros, you can play "
+ rounds + " rounds.");
System.out.println("");
}
publicstaticvoid示例(){
国际货币=200;
int-lottoCost=4;
int jokerCost=3;
int costTogether=lottoCost+jokerCost;
整数=0;
对于(int i=money;i你的for
-循环定义不正确。i
从money
=200开始。只要i你的for
-循环定义不正确,你就想重复循环。i
从money
=200开始。你想重复循环,只要你的停止条件是iion错误,因此循环永远不会执行。您应该使用=
。此外,您永远不会更改或使用i
下面是一个更正的版本,使用currMoney
而不是i
更有意义
int rounds = 0;
for (int currMoney = money; currMoney >= costTogether; currMoney -= costTogether) {
rounds++;
}
但很明显,在这里,你只需要一个简单的划分,正如@Fredszaq在他的回答中指出的:
int rounds = money / costTogether;
您的停止条件错误,因此循环永远不会执行。您应该使用=
。此外,您永远不会更改或使用i
下面是一个更正的版本,使用currMoney
而不是i
更有意义
int rounds = 0;
for (int currMoney = money; currMoney >= costTogether; currMoney -= costTogether) {
rounds++;
}
但很明显,在这里,你只需要一个简单的划分,正如@Fredszaq在他的回答中指出的:
int rounds = money / costTogether;
此条件i此条件i循环运行时,您仅以迂回的方式递增轮数
循环运行时i=0
和循环中的减量i
for (int i = money; i >= 0; rounds++) {
money = money-costTogether;
i--;
}
循环运行时,您仅以迂回的方式递增轮数
循环运行时i=0
和循环中的减量i
for (int i = money; i >= 0; rounds++) {
money = money-costTogether;
i--;
}
一般来说,在for的3个部分中使用相同的变量是好的。请注意,循环初始化部分(第一个int i=money
)只运行一次,并且在循环期间不修改i。此外,条件从一开始就是false(200<0
),因此循环甚至不会运行一次
我认为您需要的是一个简单的int除法,只需将for块替换为:
rounds = money / costTogether;
一般来说,在for的3个部分中使用相同的变量是好的。请注意,循环初始化部分(第一个int i=money
)只运行一次,并且在循环期间不修改i。此外,条件从一开始就是false(200<0
),因此循环甚至不会运行一次
我认为您需要的是一个简单的int除法,只需将for块替换为:
rounds = money / costTogether;
循环永远不会被输入,这就是为什么你会看到你所看到的。试着在纸上做for循环。为什么你要使用for循环?如果你按照别人的建议修复循环,你的输出将不再正确,因为你修改了money
变量。另外,你不需要循环来计算轮数,正常除法就可以了(如果你使用这个,那么你就顺便“修复”了我之前评论中注意到的bug)。循环永远不会被输入,这就是为什么你会看到你所看到的。试着在纸上做for循环。为什么你要使用for循环?如果你按照别人的建议修复循环,你的输出将不再正确,因为你修改了money
变量。此外,你不需要循环来计算轮数,正常除法就可以了(如果你使用这个,那么你就顺便“修复”了我之前评论中注意到的bug)。他在做i这是他的代码所说的。无论如何,使用for循环似乎不太适合他的情况。他在做i这是他的代码所说的。无论如何,使用for循环似乎不太适合他的情况。不过这里是无限循环。@Evan oops!我没有看到它,谢谢。请随时更新它以使其清晰无限尽管在这里。@Evan oops!我没有看到它,谢谢。请随时更新它以澄清这是错误的。i
从money
开始,但没有在每个回合按正确的金额递减。这是错误的。i
从money
开始,但没有在每个回合按正确的金额递减。money变量应该由于以后打印出来,所以不能更改。事实上,我以为OP打印的是剩余的钱,我没有读;-)这确实奏效了!当然我希望使用一个新变量:)感谢大家的快速回答!货币变量不应该更改,因为它稍后会打印出来。事实上,我以为OP正在打印剩余的货币,我没有读到;-)这确实奏效了!当然我希望使用一个新的变量:)感谢大家的快速回答!投票支持关于原始问题的简单答案,而不是OP当前的小错误。投票支持关于原始问题的简单答案,而不是OP当前的小错误。