黑马程序员技术交流社区

标题: 我的dowhile语句问题出在哪 [打印本页]

作者: 焚雨成灰    时间: 2014-3-6 21:12
标题: 我的dowhile语句问题出在哪
本帖最后由 焚雨成灰 于 2014-3-7 08:18 编辑

题目:设s=1*2*3*......*n,求s不大于400000的最大的n
public class test1 {
        public static void main(String[] args)
        {
                int n=1;
                int sum=1;
                do
                {
                        sum *= n;
                        n++;
                }while(sum>400000);
                System.out.println("n="+(n-1));
        }//end main
}//end class test1
运行结果为何不是8?问题出在哪
作者: chen_x    时间: 2014-3-6 21:42
while(sum>400000) ,判断条件写错了,应该是while(sum<400000)
作者: 12560zhang    时间: 2014-3-6 21:49
本帖最后由 12560zhang 于 2014-3-6 22:26 编辑
  1. <div class="blockcode"><blockquote>public class Test {

  2.         public static void main(String[] args) {       
  3.                          int n=1;
  4.                          int sum =1;
  5.                          do
  6.                          {                                                                                                 
  7.                                  n++;
  8.                                  sum *= n;
  9.                                  System.out.println(sum+"  "+n);                                 
  10.                                  System.out.println("sum="+sum+"*"+n+"="+sum*n);                                 
  11.                          }while(sum<=400000);                         
  12.                          System.out.println("n="+(n-1));
  13.                  }         
  14.         }
复制代码



作者: nicholyx    时间: 2014-3-6 21:55
本帖最后由 nicholyx 于 2014-3-6 22:00 编辑

  1. public class Demo2 {
  2.         public static void main(String[] args)
  3.         {
  4.                 int n=1;
  5.                 int sum=1;
  6.                 do
  7.                 {
  8.                     n++;  //n++应该先写
  9.                     sum *= n;
  10.                         
  11.                 }while(sum<=400000);  //条件判断写错了
  12.                 System.out.println("n="+(n-1));  //结果应该是9
  13.         }//end main
  14. }//end class test1
复制代码






作者: zhouliang    时间: 2014-3-6 22:16
你do里面那个执行语句应该为sum=sum*n;while条件表达式里面的语句应该为sum<=400000;你试下
作者: 小脚印    时间: 2014-3-7 00:43
public class test1 {
         public static void main(String[] args)
         {
                 int n=1;
                 int sum=1;
                 do
                 {
                         sum *= n;
                         n++;
                 }while(sum>400000);//判断条件写错了 应该while(sum<=400000)
                 System.out.println("n="+(n-1));
         }//end main
}//end class test1
//答案是9
作者: 焚雨成灰    时间: 2014-3-7 08:09
chen_x 发表于 2014-3-6 21:42
while(sum>400000) ,判断条件写错了,应该是while(sum

对哦,低级错误没发现啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2