这个程序为什么出不了结果
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楼的才是正确解释。
你的程序在逻辑上存在问题。
对于边界条件的检测没有考虑到,导致程序代码都是永远不会执行的废码。
所以永远不会你想要的输出。