填字游戏求帮忙
题目:现有填字游戏:SEVEN
* 7
----------
FORTY9
该式表示一个乘法算式,式中SEVEN是一个5位数,FORTY9是一个6位数,相同的字母代表相同的数字,不同的字母代表不同的数字,并且这些字母表示的数字都不等于9。编程,找出所有可能的解(本题共有3组解)。
代码:
public class Crossword {
public Crossword(){}
public boolean n1(int a[]){
int i=0,j;
while(a[4]!=7)
return false;
while(a[1]!=a[3])
return false;
while(i==0){
for(j=i+1;j<=4;j++){
if(a[0]==a[j])
return false;
}
}
while(i==2){
for(j=i+1;j<=4;j++){
if(a[2]==a[j])
return false;
}
}
return true;
}
public boolean n2(int a[],int b[]){
int i,j;
for(i=0;i<=4;i++)
for(j=0;j<=5;j++)
if(a[i]==b[j])
return false;
if(b[5]!=9)
return false;
return true;
}
public static void main(String[] args){
Crossword c=new Crossword();
int m,n;
int i,j;
int a[]=new int[5];
int b[]=new int[6];
for(i=14287;i<86567;i++){
m=i;
for(j=4;j>=0;j--){
a[j]=m%10;
m=m/10;
}
if(c.n1(a)){
n=m*7;
if(n<876549){
for(j=5;j>=0;j--){
b[j]=n%10;
n=n/10;
}
if(c.n2(a,b)){
System.out.printf(" %d%d%d%d%d",a[0],a[1],a[2],a[3],a[4]);
System.out.println("\n *7");
System.out.println("-------");
System.out.println(" "+ b[0]+b[1]+b[2]+b[3]+b[4]+b[5]);
}
}
}
}
}
}
请问哪里错了,为什么运行不了。