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 处小修改:
- 在 if 之前添加以下行,这样您就可以看到发生了什么
System.out.println("i =" + i + "; sum = " + sum);
- 将 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);
}
我是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 处小修改:
- 在 if 之前添加以下行,这样您就可以看到发生了什么
System.out.println("i =" + i + "; sum = " + sum);
- 将 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);
}