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++那样通过传引用轻松实现数据交换的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值