典型的数组处理代码(algs4)


1.   找出数组中最大的元素

                        求最大数的API

public   class     Max    

private  double    max                       存储最大值
private  double[]  b                            存储数组

public                    Max(double[]a)    构造函数,对数组进行复制性保护       
public   double   found()                   寻找最大数

package array1;
/** 找出数组中最大的元素-数据类型的实现
*/
public class Max
{
	private double max;
	private double[] b;
	
	public Max(double[] a)		//构造函数,数组是引用传递而非值传递所以进行复制性保护
	{
		b=new double[a.length];
		for(int i=0;i<a.length;i++)
			b[i]=a[i];
	}
	public double found()
	{
		max=b[0];
		for(int i=0;i<b.length;i++)
			if(max<b[i])
				max=b[i];
		return max;
	}
}


package array1;

import java.util.Scanner;

/** 找出数组中最大的数组元素-测试用例
*/
public class Test
{

	public static void main(String[] args)
	{
		int m;
		double n;
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入数组的元素个数:");	
		m=sc.nextInt();  				
		double[] o=new double[m];
		System.out.println("请输入"+m+"个元素:");	
		for(int i=0;i<m;i++)
			o[i]=sc.nextDouble();		
		
		Max max=new Max(o);				//初始化一个对象,调用构造函数
		n=max.found();	
		System.out.print("最大值:");	
		System.out.println(n);		
		sc.close();						//关闭输入流
	}

}



2.   计算数组元素的平均值

                        计算数组平均值的API

public class Avg

private  int           n                              计数

private  double   sum                       存储累加的数

public   void        add(double b)      计算个数,累加求和          

public   double   mean()                  取平均

public   String     toString()               重写toString()方法



package array2;
/**计算数组的平均值(没有保存数据值)-数据类型的实现
*/
public class Avg
{
	private int n;
	private double sum;
	
	public void add(double b)
	{
		n++;
		sum+=b;
	}
	public double mean()
	{
		return sum/n;
	}
	public String toString()
	{
		return "平均值:" +String.format("%f", mean());
	}
	
}


package array2;

import java.util.Scanner;

/** 计算数组的平均值-测试用例
*/
public class Test
{
	public static void main(String[] args)
	{
		int n;
		
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入数组元素个数:");	
		n=sc.nextInt();
		Avg avg=new Avg();
		System.out.println("请输入"+n+"个元素:");	
		for(int i=0;i<n;i++)
		{
			avg.add(sc.nextDouble());
		}
		System.out.println(avg);
		sc.close();
	}
}


3.   复制数组

package array2;

import java.util.Scanner;

/** 复制数组
*/
public class Copy
{
	public static void main(String[] args)
	{
		int n;
		double[] m;
		double[] a;
		
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入数组元素个数:");
		n=sc.nextInt();		
		m=new double[n];
		System.out.println("请输入"+n+"个元素:");	
		for(int i=0;i<n;i++)
			m[i]=sc.nextDouble();		
		/*-------------复制-----------------*/
		a=new double[m.length];
		for(int i=0;i<m.length;i++)
			a[i]=m[i];
		/*--------------------------------*/
		System.out.println("复制后的数组:");	
		for(int i=0;i<m.length;i++)
			System.out.print(a[i]+" ");
		sc.close();
	}
}


4.   颠倒数组元素的顺序

package array3;

import java.util.Scanner;

/**颠倒数组元素的顺序
*/
public class Reverse
{
	public static void main (String[] args)
	{
		int n;
		double[] m;
		double temp;
		
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入数组元素个数:");	
		n=sc.nextInt();					
		m=new double[n];
		
		System.out.println("请输入"+n+"个元素:");	
		for (int i=0;i<n;i++)
			m[i]=sc.nextDouble();		

		/*--------------进行颠倒--------------*/
		for(int i=0;i<m.length/2;i++)
		{
			temp=m[i];
			m[i]=m[m.length-i-1];  //长度-1-i!
			m[m.length-i-1]=temp;			
		}
		/*-------------------------------*/
		System.out.println("颠倒后的数组:");	
		for(int i=0;i<m.length;i++)
			System.out.print(m[i]+" ");
		
		sc.close();
	}
}


5.   矩阵相乘(方阵)

a[]*b[]=c[]

package array4;

import java.util.Scanner;

/** 矩阵相乘(方阵)a[][]*b[][]
*/
public class Mult
{

	public static void main(String[] args)
	{
		int n;
		double[][] a;
		double[][] b;
		double[][] c;

		Scanner sc=new Scanner(System.in);
		System.out.println("请先输入方阵的行和列的值:");
		n=sc.nextInt();
		a=new double[n][n];
		b=new double[n][n];
		c=new double[n][n];
		
		System.out.println("请先输入一个"+n+"*"+n+"的方阵1:");
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				a[i][j]=sc.nextDouble();
		System.out.println("请再输入一个"+n+"*"+n+"的方阵2:");
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				b[i][j]=sc.nextDouble();
		/*-------------------------*/
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
			{     /*计算行i和列j的点乘*/
				for(int k=0;k<n;k++)
					c[i][j]+=a[i][k]*b[k][j];
			}
		/*-------------------------*/
		System.out.println("矩阵的乘积:");
		for(int i=0;i<n;i++)
			{
				for(int j=0;j<n;j++)
					System.out.print(c[i][j]+" ");
				System.out.println();
			}
		sc.close();
		
	}

}

相关拓展阅读:

java中从键盘输入的三种方法





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值