[英]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.