public class VamNub{
public static void main(String[] args){
for(int i=10;i<100;i++){
for(int j=i;j<100;j++){
int vamnub=i*j;
if((vamnub<1000)||(vamnub%100==0))      
//个人认为没有必要加vamnub>9999,这是个必然问题,有大神说可以加((vamnub-j-i)%9)!=0加上后速度如有神助。
continue;
int[] vb=new int[4];
int[] ij=new int[4];
vb[0]=vamnub%10;
vb[1]=(vamnub%100)/10;
vb[2]=(vamnub%1000)/100;
vb[3]=vamnub/1000;
ij[0]=i%10;
ij[1]=i/10;
ij[2]=j%10;
ij[3]=j/10;
int k=0;
for(int a=0;a<4;a++){
for(int b=0;b<4;b++){
if(vb[a]==ij[b]){
ij[b]=-1;
k++;
break;
}
}
}
if(k==4)
System.out.println(i+"*"+j+"="+i*j+"为吸血鬼数。");
}
}
}
}
经过测试输出正确。见过好多大神用String里的函数做最后判断,但是当看到think in java 的这道题时,本身还是菜鸟,根本不知道那些函数都是干什么的,所以,只能用笨办法了。