Java 当计数器达到某个点时中断循环

Java Breaking for loop when counter reaches certain point

我是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);  

    }  


}

如果您稍微更改一下程序,您会发现无法执行这部分中包含的代码:

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

我无法发表评论,因为我没有足够的声誉,但如果你想让它在 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

您好,也许您可​​以做 2 处小修改:

  1. 在 if 之前添加以下行,这样您就可以看到发生了什么

System.out.println("i =" + i + "; sum = " + sum);

  1. 将 if 更改为:if (sum > 3000)

所以你可以看到:

i =75; sum = 2850
i =76; sum = 2926
i =77; sum = 3003
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);  
}