这个小java程序哪里出错了???

junjunndsc 2011-10-05 10:49:09
用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);
}
}
...全文
158 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
a1540077373 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 a1540077373 的回复:]
嘿嘿,我的结果和他们都不一样的。我算出来时133哦。不解释看代码。

Java code

public class test {
public static void main(String arsg[]) {
int n=0,sum=0;
for (int i = 0;true; i++) {
for(int j=……
[/Quote]
额,我发现我看错题了。不好意思哈。


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


Jarvis_Chen 2011-10-06
  • 打赏
  • 举报
回复

int sum = 0;
int n = 0;
while ((sum += ++n) < (8888 - n));
System.out.println("n = " + n);
System.out.println("sum = " + sum);


楼主,你的a,t,n貌似没有用到嘛。。。
a1540077373 2011-10-06
  • 打赏
  • 举报
回复
顺便再说一句,既然你不确定,那就写个循环判断一下不就知道是否正确啦。下面的代码,你只需改一下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);
}
}
a1540077373 2011-10-06
  • 打赏
  • 举报
回复
嘿嘿,我的结果和他们都不一样的。我算出来时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.
}
}
Fenglee2008 2011-10-06
  • 打赏
  • 举报
回复
,,,,,,,,,,,,,,,,,,,,,,,
  • 打赏
  • 举报
回复
132
哥们,你的代码写的太啰嗦了,很多没必要的变量。
写程序要避免定义一堆没用的变量,这样先不说会让你的程序的执行效率降低,起码是你编写代码的效率也低了。你得去考虑这个那个的变量存放的是什么值,怎么变化,很头疼的。
zhaoct 2011-10-06
  • 打赏
  • 举报
回复

int sum = 0;
for(int i=1; ;i++){
if(sum + i >= 8888){
System.out.println(i - 1);
break;
}else{
sum += i;
}
}
junjunndsc 2011-10-06
  • 打赏
  • 举报
回复
13楼的我看的很清楚,谢谢了。继续学习
niuniu20008 2011-10-06
  • 打赏
  • 举报
回复
楼主的代码稍微变通下就是这样

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

junjunndsc 2011-10-06
  • 打赏
  • 举报
回复
恩,就是啊,,发现很多变量是多余的,学习了。谢谢各位大侠相助。
Tal 2011-10-05
  • 打赏
  • 举报
回复

//(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;
}
}
尘缘udbwcso 2011-10-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 udbwcso 的回复:]
C/C++ code


public class NN
{
public static void main(String arsg[]){
int i=1,sum=0;
//boolean a=true;
for(i=1; ; i++){
sum += i;
……
[/Quote]

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)
尘缘udbwcso 2011-10-05
  • 打赏
  • 举报
回复

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

huntor 2011-10-05
  • 打赏
  • 举报
回复
132
        int i = 0;
for (int sum = 0; sum < 8888 - i; i+=1, sum+=i);
System.out.println(i);
你将从《深入浅出javascript(中文版)》学到什么?这么说你准备从写html和css的静态网页跃进到编写动态网络应用程序脚本了?这里就是起点。《深入浅出java script》带你游历令人兴奋的交互式网页创建过程。为了启发你的思考,《深入浅出javascript(中文版)》覆盖了所有的java script基本知识,从基本网络编程技巧,如变量、函数和循环语句,到高级一些的专题,如表单验证、dom操作、客户端对象、脚本程序调试——甚至是aiax!赶快做好准备……快速响应的网站离你只有几页纸那么远。   为何《深入浅出javascript(中文版)》看上去如此不同?   我们认为你的时间如此宝贵以至于不应该花费在为新概念伤脑筋上面。《深入浅出java script》用最新的认知科学和学习理论打造多感官的学习体验,它运用丰富的视觉样式激发你的大脑工作,而不是密密麻麻的文字让你看了昏昏欲睡。 序 1 交互式网络:感觉虚拟世界 2 存储数据:每项事物都有自己的位置 3 探索客户端:浏览器探索 4 决策:前有叉路,面对抉择 5 循环:自我重复的风险 6 函数:简化、重复利用、回收再利用 7 表单与验证:让用户全盘托出 8 驾驭网页:利用dom分割html 9 为数据带来生命:科学对象怪人 10 创建自定义对象:自定义对象让你为所欲为 11 除错务尽:好脚本也会出错 12 动态数据:贴心易感的网络应用程序

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧