java算法求和,我的运行结果不对,求解答

我的问题:

img

我写的代码:
public class LanQiaoBei {
int i,p,t,sum=0;
int s[]=new int[40];

public void setP(int p) {
    this.p = p;
}

int pp() {
   for(i=1;i<=p;i++) {    
        if(i%10==0||i%10==1||i%10==2||i%10==9) {                    
            for(t=0;t<p;t++) {
                s[t]=i;
            }                
     
     }
        }
   for(t=0;t<s.length;t++) {
         sum=sum+s[t];
   }
     return sum;

}
public static void main(String[] args){
LanQiaoBei bb=new LanQiaoBei();
bb.setP(40);
bb.pp();
System.out.println(bb);
}
}
我的运行结果:LanQiaoBei@2f92e0f4

img


我想要的结果是问题的和,应该是一个整数。

(1)你的pp函数逻辑不对,只能判断末尾还有0/1/2/9的数,其他位置的不能判断
(2)printlen中输出的不应该是bb,应该是bb.pp()
运行结果:

img

代码修改如下:

package test;

public class LanQiaoBei {

    int p;

    public void setP(int p) {
        this.p = p;
    }
     
    int pp() {
        int i,j=0,t,sum=0,k=0;
        int s[]=new int[40];
        for(i=1;i<=p;i++) {
            t = i;
            while(t!=0){ //这里判断i中是否包含 0 1 2 9这几个数字中的任意一个
                int mm = t%10; //逐个取数字的末尾数
                t/=10; //数字除以10,跟上一句配合使用,假如 t = i = 12; mm=t%10=2,t=t/10=1,下一次循环的时候 mm=t%10=1,这样能得到数字i各个位上的所有数字
                if(mm==0 || mm==1 || mm==2 || mm==9){
                    s[k++] = i;
                    break;
                }
            }
        }
       for(t=0;t<k;t++) {
             sum=sum+s[t];
       }
         return sum;
    }
    public static void main(String[] args){
    LanQiaoBei bb=new LanQiaoBei();
    bb.setP(40);
    //bb.pp();
    System.out.println(bb.pp());
    }

}


你输出的应该要是bb.pp(),而不是bb,将bb.pp()用int接收然后再输出

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632