当前位置:编程学习 > JAVA >>

写一个循环语句时碰到了问题,求解

  题目是0*0+1*1+2*2+3*3+......+n*n=10051005
求n的值 请问我这么写哪里错了 eclipse总是报错

public class At1_2 {

public static void main(String[] args) {
int sum=0;
for(int n=0;sum<10051005;n=n++);int n = 0;n=n++;
{
 sum=sum+n*n;

}
System.out.println(n);
}
}
--------------------编程问答-------------------- 值太大了 

long sum=0;

下面的也改改 --------------------编程问答-------------------- for(int n=0;sum<10051005;n=n++);int n = 0;n=n++;
{
 sum=sum+n*n;

}
红色的是干吗哟 --------------------编程问答-------------------- for(int n=0;sum<10051005;n=n++);int n = 0;n=n++;
{
 sum=sum+n*n;

}

这么写 。。。。。。。。。

下面还引用了 n --------------------编程问答--------------------

public class Test {
    public static void main(String[] args) {
        int sum = 0, n = 0;
        for (n = 0; sum < 10051005; n++) {
            sum += n * n;
        }
        System.out.println(n);
    }
}
--------------------编程问答-------------------- 楼上的不错。 --------------------编程问答-------------------- 要用for循环 --------------------编程问答-------------------- 哦 我看错了  谢谢啦  我对比一下  我哪里出错了 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 4楼是对的,楼主,回复我们的时候记得引用,要不大家看不到 --------------------编程问答-------------------- 你的for循环是这么写的for();注意这个分号.思考下你的语句,你的sum的值始终为0,所以你的for是死循环.这应该是编译器编译时发现的问题. --------------------编程问答-------------------- for(int n=0;sum<10051005;n=n++);  你这for条件后跟了个;  肯定出错啊 
;代表语句结束 --------------------编程问答--------------------
引用 4 楼 ForestDB 的回复:

public class Test {
    public static void main(String[] args) {
        int sum = 0, n = 0;
        for (n = 0; sum < 10051005; n++) {
            sum += n * n;
        }
        System.out.println(n);
    }
}
此答案是错的,这种算法的结果是312, 但是 如果逆向推到的话  发现0*0+1*1+2*2+。。。+312*312不等于楼主的数。 --------------------编程问答-------------------- 严谨一点的答案应该是:
public class Test {

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(getN(10172500));


}

public static int getN(int sum)
{
int total=0;
int n=0;
while(true)
{
total+=n*n;
if(total==sum)
{
if(n>sum)
{
return -1;//代表没有这样的数,比如sum=3,4,,,
}else
{
return n;
}
}
n++;

}
}

}




--------------------编程问答--------------------
引用 楼主 u012255574 的回复:
  题目是0*0+1*1+2*2+3*3+......+n*n=10051005
求n的值 请问我这么写哪里错了 eclipse总是报错
public class At1_2 {
public static void main(String[] args) {
int sum=0;
for(int n=0;sum<10051005;n=n++)
{
sum=sum+n*n;
}
System.out.println(n);
}
}


楼主,首先,你的算法本身就是错的!!!
人家要的是0*0+1*1+2*2+3*3+......+n*n=10051005 ;
也就是if(sum == 10051005 ) System.out.println(n);
而你呢,你知解释sum<10051005,然后n++,我靠,人家要你算的就是n啊 !!!
------------
I 服了 you ,同时服了这么多楼帮你一起错下去 ...  --------------------编程问答-------------------- 终于被人看出来, 我一开始就看出来了, 楼上已说了,我路过.... --------------------编程问答-------------------- 除 --------------------编程问答--------------------
int n = 0;
n = n++;
System.out.println(n);

大家讨论一下n的输出吧 --------------------编程问答-------------------- 希望快點看到不通的正解 --------------------编程问答--------------------
引用 14 楼 weidu23 的回复:
Quote: 引用 楼主 u012255574 的回复:

  题目是0*0+1*1+2*2+3*3+......+n*n=10051005
求n的值 请问我这么写哪里错了 eclipse总是报错
public class At1_2 {
public static void main(String[] args) {
int sum=0;
for(int n=0;sum<10051005;n=n++)
{
sum=sum+n*n;
}
System.out.println(n);
}
}


楼主,首先,你的算法本身就是错的!!!
人家要的是0*0+1*1+2*2+3*3+......+n*n=10051005 ;
也就是if(sum == 10051005 ) System.out.println(n);
而你呢,你知解释sum<10051005,然后n++,我靠,人家要你算的就是n啊 !!!
------------
I 服了 you ,同时服了这么多楼帮你一起错下去 ... 
路过!
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,