JAVA中涉及函數參數的傳遞問題。

               下午本想學學數據結構,可是在進行寫一個兩數交換的函數上遇到了問題。在涉及java中函數的參數傳遞問題上,由於java的引用已經相對於C++退化,不能像C++中通過引用傳遞實現實參的改變。下面是一個實現數據全排列的程序:

package dataOfStructure;

import java.util.Scanner;
/*
 * 對數組中的數據進行全排列,並且涉及到java中參數的傳遞問題。
 */

public class dataOne
{
	
	A[] a= new A[8];
 	
	void input()//獲取隨機的數字
	{
		Scanner sc = new Scanner(System.in);
		
		for(int j=0;j<a.length;j++)
		{
			
			this.a[j]=new A();
			this.a[j].i=sc.nextInt();
			
		}	
		
	}
	
	public int count=0;//記錄所有的情況
	
	public void perm(A a[],int k,int n)
	{
		int i;
		if(k==1)
		{
			for(i=0;i<n;i++)
			{
				System.out.print(a[i].i);

			}
			System.out.println();
			this.count++;

		}
		else
		{
			for(i=n-k;i<n;i++)
			{

				this.swap(a[i],a[n-k]);
				this.perm(a,k-1,n);
				this.swap(a[i],a[n-k]);
				
			}

		}

	}
	public   void swap(A aa,A bb)
	{
		A temp = new A();
		temp.i=aa.i;
		aa.i=bb.i;
		bb.i=temp.i;
	}
	
	public static void main(String[] args)
	{
		
		
		dataOne da = new dataOne();
		
		da.input();
		da.perm(da.a, 5,da.a.length );
		System.out.println("得到的全排列數目爲:"+da.count);
		
	}
	
}
class A  //利用對象引用來實現參數的傳遞
{	
	public  int i;
}


由於基礎比較差,沒有想到更好的方法來實現java中像C++那樣通過傳引用輕鬆實現數據交換的方法。

發佈了6 篇原創文章 · 獲贊 5 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章