用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);
}
}

解决方案 »

  1.   

    132
            int i = 0;
            for (int sum = 0; sum < 8888 - i; i+=1, sum+=i);
            System.out.println(i);
      

  2.   


    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);
    }
    }
      

  3.   


    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);
    }
    }
    上面有个地方弄错了
    应该是if(sum < 8888 && sum + i + 1 >= 8888)
      

  4.   


    //(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;
    }
    }
      

  5.   

    嘿嘿,我的结果和他们都不一样的。我算出来时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.
    }
    }
      

  6.   

    顺便再说一句,既然你不确定,那就写个循环判断一下不就知道是否正确啦。下面的代码,你只需改一下n的值你就知道加起来到底等于多少了。n=132的时候,sum=8778;当n=133的时候,sum=8911。所以答案是133.public class test {
    public static void main(String arsg[]) {
    int sum=0;
    int n=133;
    for(int i=0;i<=n;i++){
    sum+=i;
    }
    System.out.println(sum);
    }
    }
      

  7.   


    int sum = 0;
    int n = 0;
    while ((sum += ++n) < (8888 - n));
    System.out.println("n = " + n);
    System.out.println("sum = " + sum);
    楼主,你的a,t,n貌似没有用到嘛
      

  8.   

    额,我发现我看错题了。不好意思哈。
    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-1;
                    System.out.println("n=" + n);//结果为132.
                    sum=0;
                    break;
                }
                sum=0;
            }
            
            //验证!!!
            for(int i=0;i<=n;i++){
                sum+=i;
            }
            System.out.println(sum);//输出为8778
            System.out.println(sum+(n+1));//输出为8911
        }
    }
      

  9.   

    楼主的代码稍微变通下就是这样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
    }
    }
      

  10.   


                   int sum = 0;
    for(int i=1; ;i++){
    if(sum + i >= 8888){
    System.out.println(i - 1);
    break;
    }else{
    sum += i;
    }
    }