[英]Java - decrement variable in while loop and print list
球队总薪水= 600000平均Salindivindiv = 20000
如果预算为60万且平均个人工资为20000,则团队可以雇用多少团队成员。
我想打印一个看起来像这样的列表:
0
1
2
3
...all the way to 30
到目前为止,这是我的无效代码:
int teamsalary = 600000;
int avgSalindivindiv = 20000;
int numofpeople = 0;
while(teamsalary >= 0) {
System.out.println(numofpeople);
teamsalary = teamsalary - (numofpeople * avgSalindiv);
numofpeople++;
break;
}
您不能使用teamsalary = teamsalary - (numofpeople * avgSalindiv);
因为这将第一次减去0,第二次减去20000,第三次减去40000,依此类推。您每次只想减去20000(对于添加的每个人)。 您还需要使变量名保持一致。 (您同时使用了avgSalindivindiv
和avgSalindiv
)
int teamsalary = 600000;
int avgSalindivindiv = 20000;
int numofpeople = 0;
System.out.println(numofpeople);
// subtracting avgSalindivindiv here prevents loop from running an extra time
while((teamsalary-=avgSalindivindiv) >= 0) {
numofpeople++;
System.out.println(numofpeople);
}
输出:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
我在您的逻辑中看到的唯一明显问题是以下行:
teamsalary = teamsalary - (numofpeople * avgSalindiv);
在这里,您要减去平均薪水乘以总人数,这是没有意义的。 相反,您希望在循环的每次迭代中减去相同的平均avgSalindiv
。 尝试改用以下代码:
int teamsalary = 600000;
int avgSalindivindiv = 20000;
int numofpeople = 0;
while (teamsalary >= 0) {
System.out.println(numofpeople);
teamsalary -= avgSalindiv;
++numofpeople;
}
尝试像这样删除break
:
int teamsalary = 600000;
int avgSalindivindiv = 20000;
int numofpeople = 0;
while (teamsalary >= 0) {
System.out.println(numofpeople);
teamsalary = teamsalary - (numofpeople * avgSalindivindiv);
numofpeople++;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.