A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 焚雨成灰 中级黑马   /  2014-3-6 21:12  /  1129 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 焚雨成灰 于 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?问题出在哪

评分

参与人数 1黑马币 +5 收起 理由
何伟超 + 5 你题都没看清?

查看全部评分

6 个回复

倒序浏览
while(sum>400000) ,判断条件写错了,应该是while(sum<400000)
回复 使用道具 举报
本帖最后由 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.         }
复制代码


评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 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
复制代码





评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
你do里面那个执行语句应该为sum=sum*n;while条件表达式里面的语句应该为sum<=400000;你试下
回复 使用道具 举报
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

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
chen_x 发表于 2014-3-6 21:42
while(sum>400000) ,判断条件写错了,应该是while(sum

对哦,低级错误没发现啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马