首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

这个小java程序哪里出错了?解决办法

2012-01-11 
这个小java程序哪里出错了???用java语言编写求1+2+3+.....+n8888的最大正整数n,我用下面的方法求出的n13

这个小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);
}
}

[解决办法]

C/C++ code
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);        }}
[解决办法]
探讨
C/C++ code


public class NN
{
public static void main(String arsg[]){
int i=1,sum=0;
//boolean a=true;
for(i=1; ; i++){
sum += i;
……

[解决办法]
Java code
//(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哦。不解释看代码。
Java code
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.    }}
[解决办法]
Java code
int sum = 0;int n = 0;while ((sum += ++n) < (8888 - n));System.out.println("n = " + n);System.out.println("sum = " + sum);
[解决办法]
探讨
嘿嘿,我的结果和他们都不一样的。我算出来时133哦。不解释看代码。

Java code

public class test {
public static void main(String arsg[]) {
int n=0,sum=0;
for (int i = 0;true; i++) {
for(int j=……

[解决办法]
楼主的代码稍微变通下就是这样
Java code
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    }} 

热点排行