第7章 二维数组编程题

在这里插入图片描述

import java.util.Scanner;

public class lian7_1 {
	public static void main(String[] args) {
		double[][] matrix=new double[3][4];
		Scanner scanner=new Scanner(System.in);
		System.out.println("Enter a 3-by-4 matrix row by row:");
		for(int i=0;i<matrix.length;i++){
			for(int j=0;j<matrix[i].length;j++){
				matrix[i][j]=scanner.nextDouble();
			}
		}
		for(int j=1;j<=4;j++){
			System.out.println(sumcol(matrix,j));
		}
	}
	private static double sumcol(double[][] matrix, int col) {
		double sum=0;
		for(int i=0;i<matrix.length;i++){
			sum+=matrix[i][col-1];
		}
		return sum;
	}
}

在这里插入图片描述

import java.util.Scanner;

public class lian7_2 {
	public static void main(String[] args) {
		double[][] matrix=new double[4][4];
		Scanner scanner=new Scanner(System.in);
		System.out.println("Enter matrix:");
		for(int i=0;i<matrix.length;i++){
			for(int j=0;j<matrix[i].length;j++){
				matrix[i][j]=scanner.nextDouble();
			}
		}
		double sum1=mainSum1(matrix);
		double sum2=mainSum2(matrix);
		System.out.println(sum1);
		System.out.println(sum2);
	}

	private static double mainSum2(double[][] matrix) {
		double sum=0;
		for(int i=0;i<matrix.length;i++){
			int col=matrix.length-1-i;
			sum+=matrix[i][col];
		}
		return sum;
	}

	private static double mainSum1(double[][] matrix) {
		double sum=0;
		for(int i=0;i<matrix.length;i++){
			int col=i;
			sum+=matrix[i][col];
		}
		return sum;
	}
}

在这里插入图片描述

import java.util.Arrays;

public class lian7_3 {
	public static void main(String[] args) {
		int[] workTimes=new int[8];
		String[] names=new String[8];
		int[][] times=new int[8][7];
		for(int i=0;i<names.length;i++){
			names[i]="Employee"+i;
		}
		for(int i=0;i<times.length;i++){
			for(int j=0;j<times[i].length;j++){
				times[i][j]=(int)(Math.random()*9+1);
			}
		}
		
		print(names,times,workTimes);
		
		for(int i=0;i<workTimes.length;i++){
			workTimes[i]=getSum(times[i]);
		}
		
		for(int i=0;i<workTimes.length-1;i++){
			for(int j=i+1;j<workTimes.length;j++){
				if(workTimes[i]<workTimes[j]){
					changeWorkTimes(workTimes,i,j);
					changeTimes(times,i,j);
					changeNames(names,i,j);
				}
			}
		}
		print(names,times,workTimes);
	}
	private static void print(String[] names, int[][] times, int[] workTimes) {
		for(int i=0;i<names.length;i++){
			System.out.println(names[i]+Arrays.toString(times[i])+"==>"+workTimes[i]);
		}
	}

	private static void changeTimes(int[][] times, int i, int j) {
		int[] temp=times[i];
		times[i]=times[j];
		times[j]=temp;
	}

	private static void changeNames(String[] names, int i, int j) {
		String temp=names[i];
		names[i]=names[j];
		names[j]=temp;
	}

	private static void changeWorkTimes(int[] workTimes, int i, int j) {
		int temp=workTimes[i];
		workTimes[i]=workTimes[j];
		workTimes[j]=temp;
	}

	private static int getSum(int[] time) {
		int sum=0;
		for(int i=0;i<time.length;i++){
			sum+=time[i];
		}
		return sum;
	}
}

在这里插入图片描述
在这里插入图片描述

import java.util.Scanner;

public class lian7_4 {
	public static void main(String[] args) {
		int[][] ma=new int[3][3];
		int[][] mb=new int[3][3];
		int[][] mc=new int[3][3];
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter ma:");
		for(int i=0;i<ma.length;i++){
			for(int j=0;j<ma[i].length;j++){
				ma[i][j]=scanner.nextInt();
			}
		}
		System.out.print("Enter mb:");
		for(int i=0;i<mb.length;i++){
			for(int j=0;j<mb[i].length;j++){
				mb[i][j]=scanner.nextInt();
			}
		}
		mc=addMatrix(ma,mb);
		print(ma,mb,mc);
	}

	private static void print(int[][] ma, int[][] mb, int[][] mc) {
		for(int i=0;i<ma.length;i++){
			if(i!=ma.length/2){
				System.out.printf("|%d %d %d|     |%d %d %d|     |%d %d %d|\n",ma[i][0],ma[i][1],ma[i][2],mb[i][0],mb[i][1],mb[i][2],mc[i][0],mc[i][1],mc[i][2]);
			}else{
				System.out.printf("|%d %d %d|  +  |%d %d %d|  =  |%d %d %d|\n",ma[i][0],ma[i][1],ma[i][2],mb[i][0],mb[i][1],mb[i][2],mc[i][0],mc[i][1],mc[i][2]);
			}
		}
	}

	private static int[][] addMatrix(int[][] ma, int[][] mb) {
		if(ma==null||ma==null){
			return null;
		}
		if(ma.length==0||mb.length==0){
			return null;
		}
		if(ma.length!=mb.length||ma[0].length!=mb[0].length){
			return null;
		}
		int[][] mc=new int[ma.length][ma[0].length];
		for(int i=0;i<ma.length;i++){
			for(int j=0;j<ma[i].length;j++){
				mc[i][j]=ma[i][j]+mb[i][j];
			}
		}
		return mc;
	}
}

在这里插入图片描述

import java.util.Arrays;

public class lian7_5 {
	public static void main(String[] args) {
		int[][] ma=new int[4][4];
		int[][] mb=new int[4][4];
		int[][] mc=new int[4][4];
		for(int i=0;i<ma.length;i++){
			for(int j=0;j<ma[i].length;j++){
				ma[i][j]=(int)(Math.random()*9+1);
			}
		}
		for(int i=0;i<mb.length;i++){
			for(int j=0;j<mb[i].length;j++){
				mb[i][j]=(int)(Math.random()*9+1);
			}
		}
		mc=multiplyMatrix(ma, mb);
		for(int i=0;i<mc.length;i++){
			System.out.println(Arrays.toString(mc[i]));
		}
	}
	public static int[][] multiplyMatrix(int[][] ma,int[][] mb){
		int[][] mc=new int[4][4];
		for(int i=0;i<mc.length;i++){
			for(int j=0;j<mc[0].length;j++){
				mc[i][j]=getSum(ma,mb,i,j,ma[0].length);
			}
		}
		return mc;
	}
	private static int getSum(int[][] ma, int[][] mb, int i, int j, int p) {
		int sum=0;
		for(int k=0;k<p;k++){
			sum+=ma[i][k]*mb[k][j];
		}
		return sum;
	}
}

在这里插入图片描述

import java.util.Arrays;

public class lian7_6 {
	public static void main(String[] args) {
		double[][] points=new double[][]{
				{-1,0,3},
				{-1,-1,-1},
				{4,1,1},
				{2,0.5,9},
				{3.5,2,-1},
				{3,1.5,3},
				{-1.5,4,2},
				{5.5,4,-0.5}
		};
		//找到两个距离最近的点存在point中
		double[][] aimPoint=new double[][]{
				{0,0,0},
				{0,0,0}
		};
		//选择比较
		double minDistance=0;
		for(int i=0;i<points.length;i++){
			for(int j=i+1;j<points[i].length;j++){
				double Distance=getDistance(points[i],points[j]);
				if(i==0&&j==i+1){
					minDistance=Distance;
					aimPoint[0]=points[i];
					aimPoint[1]=points[j];
				}else{
					if(minDistance>Distance){
						minDistance=Distance;
						aimPoint[0]=points[i];
						aimPoint[1]=points[j];
					}
				}
			}
		}
		System.out.println(minDistance);
		System.out.println(Arrays.toString(aimPoint[0]));
		System.out.println(Arrays.toString(aimPoint[1]));
	}

	private static double getDistance(double[] p1, double[] p2) {
		double deltx=p1[0]-p2[0];
		double delty=p1[1]-p2[1];
		double deltz=p1[2]-p2[2];
		return Math.sqrt(Math.pow(deltx, 2)+Math.pow(delty, 2)+Math.pow(deltz, 2));
	}
}

7.7 n子棋

import java.util.Scanner;

public class lian7_7 {
	public static String[][] board=null;
	public static int mode=0;
	public static final String BALCK_CHESS="●";
	public static final String WHITE_CHESS="○";
	private static final Object BLACK_CHESS = null;
	public static int play;
	public static void main(String[] args) {
		initGame();
		startGame();
	}

	private static void startGame() {
		play=0;
		while(isGameContinue()){
			showBoard();
			if(play%2==0){
				System.out.println(">>>请黑方下棋:");
				if(!dropChess(BALCK_CHESS)){
					continue;
				}
			}else{
				System.out.println(">>>请白方下棋:");
				if(!dropChess(WHITE_CHESS)){
					continue;
				}
			}
			play++;
		}
		
	}

	private static boolean dropChess(String chess) {
		Scanner scanner=new Scanner(System.in);
		System.out.print(">>>请输入x:");
		int x=scanner.nextInt();
		System.out.print(">>>请输入y:");
		int y=scanner.nextInt();
		if(x<1||x>(mode-2)*mode||y<1||y>(mode-2)*mode){
			System.out.println("无此坐标");
			return false;
		}
		if(!board[x-1][y-1].equals("+")){
			System.out.println("已有棋!");
			return false;
		}
		board[x-1][y-1]=chess;
		return true;
	}
	private static boolean isGameContinue() {
		for(int i=0;i<board.length;i++){
			for(int j=0;j<board[i].length;j++){
				if(!board[i][j].equals("+")){
					//右
					if(j<=(mode-3)*mode){
						boolean flag=true;//连续相等
						for(int y=1;y<=mode-1;y++){
							if(!board[i][j].equals(board[i][j+y])){
								flag=false;
								break;
							}
						}
						if(flag){
							showBoard();
							if(board[i][j].equals(BLACK_CHESS)){
								System.out.println(">>>黑方胜!!!");
							}else{
								System.out.println(">>>白方胜!!!");
							}
							return false;//游戏不继续
						}
					}
					
					//下
					if(i<=(mode-3)*mode){
						boolean flag=true;
						for(int x=1;x<=mode-1;x++){
							if(!board[i][j].equals(board[i+x][j])){
								flag=false;
								break;
							}
						}
						if(flag){
							showBoard();
							if(board[i][j].equals(BLACK_CHESS)){
								System.out.println(">>>黑方胜!!!");
							}else{
								System.out.println(">>>白方胜!!!");
							}
							return false;
						}
					}
					//右下
					if(i<=(mode-3)*mode&&j<=(mode-3)*mode){
						boolean flag=true;
						for(int x=1,y=1;x<=mode-1&&y<=mode-1;x++,y++){
							if(!board[i][j].equals(board[i+x][j+y])){
								flag=false;
								break;
							}
						}
						if(flag){
							showBoard();
							if(board[i][j].equals(BALCK_CHESS)){
								System.out.println(">>>黑方胜!!!");
							}else{
								System.out.println(">>>白方胜!!!");
							}
							return false;
						}
					}
					//右上
					if(i>=mode-1&&j<=(mode-3)*mode){
						boolean flag=true;
						for(int x=1,y=1;x<=mode-1&&y<=mode-1;x++,y++){
							if(!board[i][j].equals(board[i-x][j+y])){
								flag=false;
								break;
							}
						}
						if(flag){
							showBoard();
							if(board[i][j].equals(BALCK_CHESS)){
								System.out.println(">>>黑方胜!!!");
							}else{
								System.out.println(">>>白方胜!!!");
							}
							return false;
						}
					}
				}
				//判断和棋
				if(play==Math.pow((mode-2)*mode, 2)){
					showBoard();
					System.out.println(">>>和棋!!!!");
					return false;
				}
			}
		}
		return true;
	}
	private static void showBoard() {
		for(int i=0;i<board.length;i++){
			for(int j=0;j<board[i].length;j++){
				System.out.print(board[i][j]+"  ");
			}
			System.out.println();
		}
		
	}

	
	private static void initGame() {
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入游戏模型:");
		mode=scanner.nextInt();
		
		board=new String[(mode-2)*mode][(mode-2)*mode];
		for(int i=0;i<board.length;i++){
			for(int j=0;j<board[i].length;j++){
				board[i][j]="+";
			}
		}
	}
}

在这里插入图片描述

public class lian7_8 {
	public static void main(String[] args) {
		//定义数组
		int[][] matrix=new int[4][4];
		//随机填充1或0
		for(int i=0;i<matrix.length;i++){
			for(int j=0;j<matrix[i].length;j++){
				matrix[i][j]=(int)(Math.random()*2);
			}
		}
		//打印
		print(matrix);
		//找到1最多的某行
		int rowIndex=findLargestRow(matrix);
		//找到1最多的某列
		int colIndex=findLargestCol(matrix);
		
		System.out.println("The largest row is "+(rowIndex+1));
		System.out.println("The largest col is "+(colIndex+1));
	}

	public static void print(int[][] matrix) {
		for(int i=0;i<matrix.length;i++){
//			System.out.println(Arrays.toString(matrix[i]));
			for(int j=0;j<matrix[i].length;j++){
				System.out.print(matrix[i][j]+" ");
			}
			System.out.println();
		}
	}

	private static int findLargestCol(int[][] matrix){
		int maxCount=0;
		int colIndex=0;
		for(int j=0;j<matrix[0].length;j++){
			int count=0;
			for(int i=0;i<matrix.length;i++){
				if(matrix[i][j]==1){
					count++;
				}
			}
			if(count>maxCount){
				maxCount=count;
				colIndex=j;
			}
		}
		return colIndex;
	}

	private static int findLargestRow(int[][] matrix){
		int maxCount=0;
		int rowIndex=0;
		for (int i=0;i<matrix.length;i++){
			int count=0;
			for (int j=0;j<matrix[i].length;j++){
				if(matrix[i][j]==1){
					count++;
				}
			}
			if(count>maxCount){
				maxCount=count;
				rowIndex=i;
			}
		}
		return rowIndex;
	}
}

7.9
在这里插入图片描述

import java.util.Scanner;

public class lian7_9 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter the number between 0 and 511:");
		int num=scanner.nextInt();
		int[][] matrix=new int[3][3];
		
		for(int i=matrix.length-1;i>=0;i--){
			for(int j=matrix[i].length-1;j>=0;j--){
				if(num!=0){
					matrix[i][j]=num%2;
					num/=2;
				}else{
					break;
				}
			}
		}
		paint(matrix);
	}

	private static void paint(int[][] matrix) {
		for(int i=0;i<matrix.length;i++){
			for(int j=0;j<matrix[i].length;j++){
				System.out.print(matrix[i][j]==0?"H":"T");
			}
			System.out.println();
		}
	}
}

在这里插入图片描述

import java.util.Arrays;
import java.util.Scanner;

public class lian7_10 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.println("Enter the number of rows and colums of the array:");
		int row=scanner.nextInt();
		int col=scanner.nextInt();
		double[][] matrix=new double[row][col];
		System.out.println("Enter the Array:");
		
		for(int i=0;i<matrix.length;i++){
			for(int j=0;j<matrix[i].length;j++){
				matrix[i][j]=scanner.nextDouble();
			}
		}
		int[] zuobiao=locateLargest(matrix);
		System.out.println(Arrays.toString(zuobiao));
		
	}
	public static int[] locateLargest(double[][] m){
		int[] zuobiao=new int[2];
		double max=0;
		for(int i=0;i<m.length;i++){
			for(int j=0;j<m[i].length;j++){
				if(m[i][j]>max){
					max=m[i][j];
					zuobiao[0]=i;
					zuobiao[1]=j;
				}
			}
		}
		return zuobiao;
	}
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值