Java:二维数组

一、题目要求:

1、定义一个二维数组,从键盘输入一个矩阵的值

2、对矩阵进行转置,输出转置后的矩阵

3、求出原矩阵中的最大值和最小值,输出其所在的行号和列号。

二、理解:

1、矩阵转置的含义:设A为m×n阶 矩阵(即m行n列),第i 行j 列的元素是a(i,j),即:A=a(i,j)

定义A的转置为这样一个n×m阶矩阵B,满足B=a(j,i),即 b (i,j)=a (j,i)(B的第i行第j列元素是A的第j行第i列元素),记A'=B。

例如:                                       

矩阵转置后为:

2、先设其中一个数组元素为最大/小值,判断大小用冒泡排序,Arrays.sort()等方法,取得最大/小值后取出其行列号+1(因行列号从0开始)。

三、实现

1、定义一个二维数组,从键盘输入一个矩阵的值

public class 数组{
//设置二维数组
public static void main(String[] agrs) {
	Scanner input=new Scanner(System.in);
	int H,L,i,j;
	 System.out.println("输入数组行数");
	 H=input .nextInt();
	 System.out.println("输入数组列数");
	 L=input.nextInt();
	 int [][] erwei=new int[H][L];
	
//输入数组元素
	 System.out.println("输入数组元素");
	 for (i = 0; i < H; i++) {
		 for (j = 0; j < L; j++) {
		erwei [i][j]  = input.nextInt();
		 }
		 }
	 
//输出转置前数组
	 System.out.println("输入的二维数组为:");
	 for ( i = 0; i < H; i++) {
	 for (j = 0; j < L; j++) {
	 System.out.print(erwei[i][j] + " ");
	 }
	 System.out.println();
	 }

2、对矩阵进行转置,输出转置后的矩阵

//转置
	 int [][] zhuanerwei=new int[erwei[0].length][erwei.length];
	 for(i=0;i<erwei.length;i++) {
	 	for(j=0;j<erwei[i].length;j++) {
	 		zhuanerwei[j][i]=erwei[i][j];
	 	}
	 }
	 
//输出转置后数组
	 System.out.println("转置后的二维数组为:");
	 for (i= 0; i< zhuanerwei.length; i++) {
		 for (j = 0; j< zhuanerwei[i].length; j++) {
		 System.out.print(zhuanerwei[i][j] + " ");
		 }
		 System.out.println();
		 }
}

3、求出原矩阵中的最大值和最小值,输出其所在的行号和列号。

//比较数组元素大小 
	 float max=erwei[0][0],maxH=0,maxL=0;//最大值,最大值的行和列
	 float min=erwei[0][0],minH=0,minL=0;//最小值,最小值的行和列
    for(i=0 ;i<erwei.length;i++) {
    	
	    for(j=0;j<erwei[i].length;j++) {
		    if(erwei[i][j]>=max) {
		    	max=erwei[i][j];
			    maxH=i+1;
			    maxL=j+1;
			    
		     }
		    if(erwei[i][j]<=min) {
		    	 min=erwei[i][j];
				    minH=i+1;
				    minL=j+1;
				    
		     }}
    } 
    System.out.println("最大值="+max+";最大值行"+maxH+";最大值列"+maxL);
    System.out.println("最小值="+min+";最小值行"+minH+";最小值列"+minL);
	   

 4、完整代码

package text;

import java.io.InputStream;
import java.util.Scanner;

public class 二维数组{
//设置二维数组
public static void main(String[] agrs) {
	Scanner input=new Scanner(System.in);
	int H,L,i,j;
	 System.out.println("输入数组行数");
	 H=input .nextInt();
	 System.out.println("输入数组列数");
	 L=input.nextInt();
	 int [][] erwei=new int[H][L];
	
//输入数组元素
	 System.out.println("输入数组元素");
	 for (i = 0; i < H; i++) {
		 for (j = 0; j < L; j++) {
		erwei [i][j]  = input.nextInt();
		 }
		 }
	 
//输出转置前数组
	 System.out.println("输入的二维数组为:");
	 for ( i = 0; i < H; i++) {
	 for (j = 0; j < L; j++) {
	 System.out.print(erwei[i][j] + " ");
	 }
	 System.out.println();
	 }
	 
//转置
	 int [][] zhuanerwei=new int[erwei[0].length][erwei.length];
	 for(i=0;i<erwei.length;i++) {
	 	for(j=0;j<erwei[i].length;j++) {
	 		zhuanerwei[j][i]=erwei[i][j];
	 	}
	 }
	 
//输出转置后数组
	 System.out.println("转置后的二维数组为:");
	 for (i= 0; i< zhuanerwei.length; i++) {
		 for (j = 0; j< zhuanerwei[i].length; j++) {
		 System.out.print(zhuanerwei[i][j] + " ");
		 }
		 System.out.println();
		 }
	 
	 
	//比较数组元素大小 
	 float max=erwei[0][0],maxH=0,maxL=0;//最大值,最大值的行和列
	 float min=erwei[0][0],minH=0,minL=0;//最小值,最小值的行和列
    for(i=0 ;i<erwei.length;i++) {
    	
	    for(j=0;j<erwei[i].length;j++) {
		    if(erwei[i][j]>=max) {
		    	max=erwei[i][j];
			    maxH=i+1;
			    maxL=j+1;
			    
		     }
		    if(erwei[i][j]<=min) {
		    	 min=erwei[i][j];
				    minH=i+1;
				    minL=j+1;
				    
		     }}} 
    System.out.println("最大值="+max+";最大值行"+maxH+";最大值列"+maxL);
    System.out.println("最小值="+min+";最小值行"+minH+";最小值列"+minL);
}
}

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值