我试着计算一个玩家能用固定数量的钱玩多少回合的乐透和小丑游戏。
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("");
}该代码目前打印文本“用200欧元,您可以播放0轮。”因此,它不向循环变量添加+1。我做错了什么?
发布于 2014-10-09 10:48:28
您的停止条件是错误的,所以循环永远不会被执行。您应该使用>=代替。此外,您也从不更改或使用i。
下面是一个经过修正的版本,使用currMoney而不是i更有意义。
int rounds = 0;
for (int currMoney = money; currMoney >= costTogether; currMoney -= costTogether) {
rounds++;
}但很明显,正如@Fredszaq在回答中指出的那样,你只需要一个简单的划分:
int rounds = money / costTogether;发布于 2014-10-09 10:52:52
一般来说,在for的三个部分中使用相同的变量是很好的。注意,循环初始化部分(第一个int i = money)只运行一次,在循环期间不修改I。此外,条件从一开始就是假的(200 < 0),因此循环甚至不运行一次。
我认为您要寻找的是一个简单的int部门,只需将for块替换为:
rounds = money / costTogether;发布于 2014-10-09 10:48:15
您的for-loop未正确定义。i从money = 200开始。您希望重复循环,直到i <= 0为止。所以你要求我从200开始,而不是大于0。这就是为什么根本不执行循环的原因。
相反,您希望为您的情况使用一个while循环。它更具可读性:
while (money >= costTogether) {
money = money - costTogether;
rounds++;
}如果要使用for循环,可以这样声明它:
for (int i = money; i >= costTogether; i -= costTogether) {
rounds++;
}https://stackoverflow.com/questions/26276457
复制相似问题