当计数器到达某一点时,Java Breaking for循环

时间:2018-01-05 22:38:52

标签: java for-loop counter break

我是Java的初学者,所以请不要对我太苛刻。我试图找到问题的解决方案但到目前为止还没有管理。长话短说,我想制作一个会增加数字1-1000的程序,并且一旦总和达到3000就应该停止添加。另外,我应该打印它停止的数字(我之前的“i”的最后一个值)循环停止休息)。这是我的尝试,但不起作用:

public class JavaApplication2018 
{
    public static void main(String[] args) 
    {
        int sum = 0;
        for (int i = 1; i < 1000; i++)
        {
          sum = sum + i;  
          if (sum == 3000)
             {
          System.out.println(i);
          break;
          }
        }

    System.out.println(sum);  

    }  


}

4 个答案:

答案 0 :(得分:3)

如果你改变你的程序,你会发现不可能执行这部分中包含的代码:

if (sum == 3000) {
    System.out.println(i);
    break;
}

,因为这些数字的sum不可能等于 3000.您可以通过在每次迭代后添加一行打印实际总和来检查它:

public class JavaApplication2018 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i < 1000; i++) {
            sum = sum + i;
            System.out.println(sum); // this line is added just to print actual sum value
            if (sum >= 3000) { // you need to change this operator from ">" to ">=" to make the code inside the if statement execute
                System.out.println(i);
                break;
            }
        }
        System.out.println(sum);
    }
}

打印的数字:

...
2850
2926
3003

如果您希望循环在之前中断导致超过3000的迭代,那么您可以将if语句更改为:

if ((sum + i + 1) > 3000) {
    System.out.println(i);
    break;
}

现在输出:

76
2926

答案 1 :(得分:3)

您好,也许您可​​以进行2次小修改:

  1. 在if之前添加以下行,以便您可以看到正在发生的事情
  2. System.out.println(“i =”+ i +“; sum =”+ sum);

    1. 将if更改为:if(sum> 3000)
    2. 所以你可以看到:

      i =75; sum = 2850
      i =76; sum = 2926
      i =77; sum = 3003
      

答案 2 :(得分:2)

我无法评论因为我没有足够的声誉,但如果你想让它在3000之前停止,

public class JavaApplication2018 
{
    public static void main(String[] args) 
    {
        int sum = 0;
        for (int i = 1; i < 1000; i++)
        {
          sum = sum + i;  
          if (sum >= 3000)
             {
          sum=sum-i;
          System.out.println(i-1);
          break;
          }
        }

    System.out.println(sum);  

    }  


}

当你到达3003时,得到sum = 3003- i(3003之前系列中的最后一个数字)和i = i-1:)

祝学习Java好运

答案 3 :(得分:0)

public static void main(String[] args) 
{
    int sum = 0;
    for (int i = 1; i <= 1000 && sum <= 3001; i++)
    {
      sum = sum + i;  
      if (sum == 3000)
      {
         System.out.println(i);
      }
    }
System.out.println(sum);  
}