实现:输入一个数n 看n的3次方是否等于连续的47个自然数的平方之和 
如 47的3次方== 22的平方+23的平方+……+68的平方 public static boolean isKiller(int n) {
long a=n*n*n;
long b=0;
long result=0;
                boolean flag = false;
for(int i=0;i<1000;i++) {
for(int j=i+1;j<48+i;j++) {
b=b+j*j;
}
result=b;
b=0;
}
if(a==result)  //问题是这里在调试里面已经显示a和result相等了  但是flag却还是flase 这是为什么呢
flag=true;
flag=false;
           return flag;
}
问题在注释里面 求指教啊

解决方案 »

  1.   

    if(a==result) //问题是这里在调试里面已经显示a和result相等了  但是flag却还是flase 这是为什么呢
                flag=true;
    else
            flag=false;
      

  2.   

    你的思路不太正确:你的result的结果是1000的平方+10001的平方+1046的平方,
    b也是打酱油的角色public static boolean isKiller(int n) {
            long a=n*n*n;
            boolean flag=false;
            long result=0;
            for(int i=0;i<1000;i++){
             for(int j=i+1;j<48+i;j++)
             result+=j*j;
             if(a==result){
             flag=true;
             break;
             }
             result=0;
           }
         return flag;
    }
      

  3.   

    flag=true; 
    flag=false;
    return flag;
    咋又等于true又等于false
      

  4.   

    if (a == result)
    {
        flag = true;
    }else{
         flag = false;
    }
      

  5.   


    public static boolean isKiller(int n) {
            long a=n*n*n;
            long b=0;
            long result=0;
    for(int i = 0; result <= a; i++)        
         for(int j=i+1;j<48+i;j++) {
                    b=b+j*j;
                }
                result=b;
                if(result == a){
                     return true;
                }
                b=0;
            }
    return false;
        }