编写应用程序,输出满足1+2+3+…+n<8888的最大正整数n。答:
class Maxn
{ public static void main(String args[])
  {
    int k=1,sum=0;
    while((sum+=k)<8888)
    k++;
    k--;
   System.out.println("最大能取到:"+k);
  }
}

解决方案 »

  1.   

    因加sum已经运算完了 在判断<8888 所以多加了1 在自减回去就正好了
      

  2.   

    假设找到了k,使得1+2+...+k>8888,那么k-1就是要求的值,所以最后减1。
      

  3.   

    假设要得到的结果是N,当k加到N后,while判断,满足条件,所以k++,实际上k就为N+1了,然后再回到while里面判断,条件不满足,退出循环,所以在while结束后,k要自减。
      

  4.   

    这代码真纠葛呀,看看下面的是不是好理解点:class Maxn {    public static void main(String args[]) {
            int result = 0;
            for (int k = 0, sum = 0; sum < 8888; k++, sum += k) {
                result = k;
            }
            System.out.println("最大能取到:" + result);
        }}
      

  5.   

    int k=1;
    int sum=0;
    while(sum<8888){
    System.out.println(k);
    sum+=k;
    if(sum>8888){
    continue;
    }
    k++;
    }
    System.out.println(sum);
      

  6.   

    class Maxn
    { public static void main(String args[])
      {
      int k=1,sum=0;//声明相加的起始数i和相加的和sum
      while((sum+=k)<8888)//进行循环求sum,sum要小于8888
      k++;
      k--;//sum>=8888时跳出循环,这时的k是不满足条件的k,所以循环才跳出来,而这时的k的上一个k才满足条件,所以要k--
      System.out.println("最大能取到:"+k);
      }
    }
      

  7.   


    int sum = 0;
    for(int i=0;;i++){
    sum += i;
    if(sum > 8888){
    System.out.println("最大值: "+ (i-1)); // 注意是 i-1
    break;
    }

    }
      

  8.   

    class Maxn
    { public static void main(String args[])
      {
      int k=1,sum=0;
      while((sum+=k)<8888)
      k++;
    ------------------------------------------------------------------------------------------
      k--;
      System.out.println("最大能取到:"+k);
      }
    }
    在这里给你来个分界线啊,while循环语句并没有{ }标识,所以while语句块中所执行的语句只有一条,k++,
    整个程序设计的思路是:让k从1开始取值,取2,3,4,5,6,依次赠1,在增1的同时再将这些值相加,保存到sum中,当k自增到一个值使sum的值大于8888时,那么k-1也就是是整个k数列的和小于8888的最大的值了。
      

  9.   

    int N = 8888;
    int result = (int)((double)sqrt(2*N)-0.5);