Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中减去循环中的变量_Java_Loops - Fatal编程技术网

在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当前的小错误。