【问题标题】:Java - decrement variable in while loop and print listJava - while循环和打印列表中的递减变量
【发布时间】:2016-01-27 02:50:59
【问题描述】:

团队工资 = 600000 avgSalindivindiv = 20000

如果预算为600000,个人平均工资为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;
}

【问题讨论】:

  • 你只想打印 0.... 到 ast 号码
  • 你为什么在那里使用break?顺便说一句,您应该描述如何它不起作用并发布一个小的、完整的、可编译的示例。
  • 请查看下面给出的深思熟虑的答案,谢谢。

标签: java while-loop decrement


【解决方案1】:

您不能使用teamsalary = teamsalary - (numofpeople * avgSalindiv);,因为这将第一次减去 0,第二次减去 20000,第三次减去 40000,依此类推。您只需每次减去 20000(对于添加的每个人)。您还需要保持变量名称一致。 (你同时使用了avgSalindivindivavgSalindiv

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

【讨论】:

    【解决方案2】:

    我看到你的逻辑唯一明显的问题是下面这行:

    teamsalary = teamsalary - (numofpeople * avgSalindiv);
    

    在这里,您要减去平均工资乘以总人数,这是没有意义的。相反,您希望在循环的每次迭代中减去相同的平均值 avgSalindiv。尝试改用此代码:

    int teamsalary = 600000;
    int avgSalindivindiv = 20000;
    int numofpeople = 0;
    while (teamsalary >= 0) {
        System.out.println(numofpeople);
        teamsalary -= avgSalindiv;
        ++numofpeople;
    }
    

    【讨论】:

    • 这正是我想要的。谢谢!
    【解决方案3】:

    尝试像这样删除break

    int teamsalary = 600000;
    int avgSalindivindiv = 20000;
    int numofpeople = 0;
    while (teamsalary >= 0) {
        System.out.println(numofpeople);
        teamsalary = teamsalary - (numofpeople * avgSalindivindiv);
        numofpeople++;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-10-08
      • 2014-08-12
      • 2021-11-24
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多