请教问题
java吧
全部回复
仅看楼主
level 1
我在做题的过程中碰到了点小问题,题目是这样的: 编写应用程序,求1!+2!
+3
!+4!+...+10!以下是我编的程序,可我编的程序运行的结果是sum=10,这很显然是错误的,有谁能告诉我错在哪吗?public class C{ public static void main(String args[]) { int sum=0, j=1 i=1; {for(i=1;i<=10 i++) sum=sum+j; j=j*i; } System.out.println("sum="+sum); }}另外,我将程序改成下面这个样子时却完全显示不了结果,为什么?public class C{ public static void main(String args[]) { int sum=0, j=1 i=1; {while(i<=10) sum=sum+j; j=j*i; } System.out.println("sum="+sum); }}有谁能告诉我错误吗?
2008年04月03日 09点04分 1
level 5
public class C {public static void main(String args[]) {int sum = 0, j = 1, i = 1;while (i <= 10) {sum = sum + j;j = j * i;i++;//设置跳出循环条件}System.out.println("sum=" + sum);}}
2008年04月03日 09点04分 2
level 1
能告诉我我错在哪吗?我需要的是错误,然后再自己编,这样印象会更深
2008年04月03日 09点04分 3
level 0
10的阶乘已经超出了int的精度了,你应该用大数字,比如说BigInteger
2008年04月03日 10点04分 4
level 5
不好意思 没看见你上面的题目 你是求1!+。。。10!那么你要算的就是没一个数字的阶乘然后将它们相加,你用J来算出你的每个数的阶乘用sum来算总和是吧,那这个程序应该是public class C {public static void main(String args[]) {int sum = 0, j = 1, i = 1;while (i <= 10) {j = j * i;// 这里是1的阶乘(i=1到10)sum = sum + j;// 这里是1到i的和i++;// 设置跳出循环条件(是i从1增长到10)}System.out.println("sum="+sum);}}
2008年04月03日 10点04分 5
level 0
完整的代码应该是这样的public class C { public static void main(String[] args) { int sum = 0, j = 1, i = 1; for (i = 1; i <= 10; i++) { j = j * i; sum = sum + j; } System.out.println("sum=" + sum+"QQ272604051"); }}
2008年04月03日 10点04分 6
level 1
2楼的,你的错了啊,我运行了一下,你的结果是:409114而正确结果是:4037913
2008年04月03日 10点04分 7
level 5
恩 是的 我没看见你题目的要求 只改了下你跳出循环的条件啊
2008年04月03日 10点04分 8
level 1
5楼的,你的依然是错误的啊,你的程序运行出的结果仍然是409114而正确结果是:4037913
2008年04月03日 10点04分 9
level 1
还是错的啊
2008年04月03日 10点04分 10
level 5
我恳请你运行一下在看看是否对错好吗
2008年04月03日 10点04分 11
level 1
软件培训咨询师-为你免费解答 北大青鸟阜成门中心 咨询QQ: 813042092。 或拨打我们的电话:010-86637010
2008年04月03日 10点04分 12
level 1
我运行了啊
2008年04月03日 10点04分 13
level 1
对了对了 你的是对的我运行时范了个错误,不好意思谢谢你了!
2008年04月03日 10点04分 14
level 0
class Testn{static int f(int j){ int i,sum=1; for(i=1;i<=j;i++) sum*=i; return sum;} public static void main(String args[]){ int n, s=0; for(n=1;n<=10;n++) s+=f(n);System.out.print("sum="+s);}sum=4037913你的错误是for循环只执行了第一句,j的值一直为1,加了十次
2008年04月03日 11点04分 15
level 1
看了一下,首先,您的是思路正确,不过有些地方逻辑上可能刚刚接触的缘故,没有成正常思维转换过来,慢慢便会习惯的。public class C{ public static void main(String args[]) { int sum=0, j=1 i=1; {for(i=1;i<=10 i++) sum=sum+j; j=j*i; } System.out.println("sum="+sum); }} 6楼朋友,看下题目,是求1!+2!+3!+4!+...+10! 你被楼主程序给误倒了;楼主问题便是出于 j=j*i;上,楼主您的思想,便是1*1=1;1*2=2;1*3=3....然后输出到表达式(sum=sum+j;)运行吧.但此处不用忘记,j=j*i是叠加的,那么自然结果便是1*2=2;2*3=6;6*4=24....这处上有些逻辑错误.因此,sum=sum+j便直接变成sum=sum+i,省略那个表达式即可public class C{ public static void main(String args[]) { int sum=0, j=1 ,i=1; {for(i=1;i<=10; i++) sum=sum+i; } System.out.println("sum="+sum); }}
2008年04月03日 12点04分 16
level 1
第二个是用while循环表示,如果第一条语句是逻辑错误而言,那么第二条错误便是原则性的错误,语法错误.首先,while的语法是 while(表达式){循环体};而你犯的错误便是:{while(i<=10) sum=sum+j; j=j*i; } {while(表达式)循环体},这样的写法自然不对,这是其一.既然是循环,那么自然要有终止条件(当然死循环不需要),你的终止条件在上个帖子的的例子已经说过的逻辑错误,应去除.然后增加i++(i=i+1);这是其二,则是如下: while(i<=10){ sum=sum+i; i=i+1; }完整程序:public class C{ public static void main(String args[]) { int sum=0,i=1; while(i<=10){ sum=sum+i; i=i+1; } System.out.println("sum="+sum); }}
2008年04月03日 12点04分 17
1