这个小java程序哪里出错了???
用java语言编写求1+2+3+.....+n<8888的最大正整数n,我用下面的方法求出的n=134,而我们同学求出的n=132,不知到底哪个正确,求教。
public class NN
{
public static void main(String arsg[])
{
int i=1,sum=0,t=1,n=0;
boolean a=true;
for(i=1;a;i++)
{
sum=sum+t;
t=i;
n++;
if(sum>=8888)
break;
}
System.out.println("n="+n);
}
}
[解决办法]
public class NN{ public static void main(String arsg[]){ int i=1,sum=0; //boolean a=true; for(i=1; ; i++){ sum += i; if(sum < 8888 && sum + i + 1 > 8888) break; } System.out.println(i); }}
[解决办法]
//(1+n)*n/2<=8888//n^2 + n <=17776//132是正确的int sum = 8888*2; for (int i = 0; i <8888; i++) { if (i*(1+i) > sum) { System.out.println(i-1); System.out.println(8888-((i-1)*i/2)); break; } }
[解决办法]
嘿嘿,我的结果和他们都不一样的。我算出来时133哦。不解释看代码。
public class test { public static void main(String arsg[]) { int n=0,sum=0; for (int i = 0;true; i++) { for(int j=0;j<=i;j++){ sum+=j; } if(sum>=8888){ n=i; System.out.println("n=" + n);//结果为133. sum=0; break; } sum=0; } //验证!!! for(int i=0;i<=n;i++){ sum+=i; } System.out.println(sum-n);//输出为8778,意思就是说,如果知道n-1的时候,即n=132的时候,1加到n不>=8888. }}
[解决办法]
int sum = 0;int n = 0;while ((sum += ++n) < (8888 - n));System.out.println("n = " + n);System.out.println("sum = " + sum);
[解决办法]
public class User { public static void main(String arsg[]) { int i = 1, sum = 0, n = 0;// 把你的t去得了,t是多余的 boolean a = true; for (i = 1; a; i++) { sum = sum + i; if (sum >= 8888)// 注意if的位置,if一定要在n++前面 break; n++; } System.out.println("n=" + n);// 132 }}