这个程序为什么出不了结果
public class H_620_1 {
public static void main(String[] args){
int []q = new int[8];
place(0,8,q);
System.out.println();
}
public static void place(int k, int n, int []q){
if(k>n)
print(q);
else
for(int i =0;i<n;i++)
if(find(i,k,q)){
q[k]=i;
place(k+1,n,q);
}
}
//====================================
public static boolean find(int i,int k,int []q){
int j=0;
while(j<k)
{ if((q[j]==i)||Math.abs(q[j]-i)==Math.abs(j-k))
return false;
j++;
}
return true;
}
//=============================================
public static void print(int []q){
int i,j;
for(i=0;i<8;i++)
System.out.println(i+" "+q[i]);
System.out.println();
for(i=0;i<8;i++){
for(j=0;j<q[i];j++)
System.out.print("| ");
System.out.print("|Q|");
for(j=q[i]+1;j<8;j++)
System.out.print(" |");
System.out.println();
}
}
}
------解决方案--------------------想出什么结果?你的place方法有输出吗?main函数的输出为空!你能得到什么结果?
------解决方案--------------------public static void main(String[] args){
int []q = new int[8];
place(0,8,q);
System.out.println();
}
main方法中 首先最后一句输出为空,而其中调用的place(0,8,q); 这个方法又没有输出,所以这个程序当然没输出结果
------解决方案--------------------find能进去吗,j = 0的话,while根本就进不去,你就一直在place自己调自己,最后结束
------解决方案--------------------嗯,3楼的才是正确解释。
你的程序在逻辑上存在问题。
对于边界条件的检测没有考虑到,导致程序代码都是永远不会执行的废码。
所以永远不会你想要的输出。