我的问题:
我写的代码:
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
(1)你的pp函数逻辑不对,只能判断末尾还有0/1/2/9的数,其他位置的不能判断
(2)printlen中输出的不应该是bb,应该是bb.pp()
运行结果:
代码修改如下:
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接收然后再输出
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!