Java训练三

这篇文章展示了几个基于Java的数组操作实例,包括数独的行、列和对角线求和验证,矩阵的转置,以及杨辉三角的生成。此外,还实现了一个简单的推箱子游戏,允许玩家通过键盘输入控制角色移动,直到将箱子推到目的地。
摘要由CSDN通过智能技术生成

一、数独

将1~9的数字放入一个3x3的数组中国,判断数组每行每列以及每个对角线的值相加是否都相同。

package haha;
public class helloworld{
	public static void main(String[] args) {
		int arr[][]= {{1,2,3},{4,5,6},{7,8,9}};
		//每行
		int arr1[]=new int[3];
		for(int i=0;i<3;i++)
		{
			int a=0;
			for(int j=0;j<3;j++)
			{
				a=a+arr[i][j];
			}
			arr1[i]=a;
		}
		//每列
		int arr2[]=new int[3];
		for(int i=0;i<3;i++)
		{
			int b=0;
			for(int j=0;j<3;j++)
			{
				b=b+arr[j][i];
			}
			arr2[i]=b;
		}
		//求和
		int arr3[]=new int[3];
		for(int i=0;i<3;i++)
		{
			arr3[i]=arr1[i]+arr2[i]+arr[i][i];
		}
		if(arr3[0]==arr3[1] && arr3[0]==arr3[2])
		{
			System.out.println("该数组每行每列以及对角线的值相加都相同");
		}
		else
		{
			System.out.println("该数组每行每列以及对角线的值相加不都相同");
		}
		
	}
}

二、矩阵转置

交换二维数组“int[][] array={{91,25,8},{51,14,2},{47,3,67}};”的行、列数据。

package haha;
public class helloworld{
	public static void main(String[] args) {
		int[][] array= {{91,25,8},{56,14,2},{47,3,67}};
		System.out.println("转置前:");
		for(int i=0;i<3;i++)
		{
			for(int j=0;j<3;j++)
			{
				System.out.print(array[i][j]+" ");
			}
			System.out.println();
		}
		
		System.out.println("转置后:");
		for(int i=0;i<3;i++)
		{
			for(int j=0;j<3;j++)
			{
				System.out.print(array[j][i]+" ");
			}
			System.out.println();
		}
	}
}

 三、杨辉三角

使用二维数组实现杨辉三角。

package haha;
public class helloworld{
	public static void main(String[] args) {
		int arr[][];
		arr=new int[10][];		
		for(int i=0;i<10;i++)
		{
			arr[i]=new int[i+1];
		}
		arr[0][0]=1;
		arr[1][0]=1;
		arr[1][1]=1;
		for(int i=2;i<10;i++)
		{
			arr[i][0]=1;
			arr[i][i]=1;
			for(int j=1;j<=i-1;j++)
			{
				arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
			}
		}
		for(int i=0;i<=9;i++)
		{
			for(int j=0;j<arr[i].length;j++)
			{
				if((i==5 && (j==2 || j==3)) || ((i>=6 && i<=8) && (j==2 || j==3 || j==4)) || (i==8 && j==5) || (i==9 && (j==2 ||j==3)) || (i==7 && j==5))
				{
					System.out.print(arr[i][j]+"   ");
				}
				else if(i==9 &&(j==4 || j==5))
				{
					System.out.print(arr[i][j]+"  ");
				}
				else
				{
					System.out.print(arr[i][j]+"    ");
				}
			}
			System.out.println();
		}
	}
}

四、推箱子游戏

编写一个简单的推箱子游戏,使用10x8的二维字符数据表示游戏画面,H表示墙壁,&表示玩家角色,o表示箱子;*表示目的地。玩家可以通过输入A、D、W、S字符控制角色移动,当箱子推到目的地时显示游戏结束。

package haha;
import java.util.Scanner;
import java.util.Arrays;
public class helloworld{
	public static void main(String[] args) {
		/*绘制游戏画面
		System.out.println("--------------------");
		System.out.println("H H H H H H H H H H");
		System.out.println("H &   H           H");
		System.out.println("H   o H   H       H");
		System.out.println("H     H   H H   H H");
		System.out.println("H               H H");
		System.out.println("H       H H H     H");
		System.out.println("H       H *       H");
		System.out.println("H H H H H H H H H H");
		System.out.println("--------------------");
		*/

		//游戏画面
		char arr0[][]= {{'H','H','H','H','H','H','H','H','H','H'},{'H','&',' ','H',' ',' ',' ',' ',' ','H'},
				{'H',' ','o','H',' ','H',' ',' ',' ',' '},{'H',' ',' ','H',' ','H','H',' ','H','H'},
				{'H',' ',' ',' ',' ',' ',' ',' ','H','H'},{'H',' ',' ',' ','H','H','H',' ',' ','H'},
				{'H',' ',' ',' ','H','*',' ',' ',' ','H'},{'H','H','H','H','H','H','H','H','H','H'}};
		System.out.println("--------------------");
		for(int i=0;i<8;i++)
		{
			for(int j=0;j<10;j++)
			{
				System.out.print(arr0[i][j]+" ");
			}
			System.out.println();
		}
		System.out.println("--------------------");
		
		//定义玩家角色的初始位置(索引)
		int m=1; //行索引
		int n=1; //列索引
		
		//从数组中除去玩家角色
		char arr[][]= {{'H','H','H','H','H','H','H','H','H','H'},{'H',' ',' ','H',' ',' ',' ',' ',' ','H'},
				{'H',' ','o','H',' ','H',' ',' ',' ',' '},{'H',' ',' ','H',' ','H','H',' ','H','H'},
				{'H',' ',' ',' ',' ',' ',' ',' ','H','H'},{'H',' ',' ',' ','H','H','H',' ',' ','H'},
				{'H',' ',' ',' ','H','*',' ',' ',' ','H'},{'H','H','H','H','H','H','H','H','H','H'}};
		
		//到达箱子位置之前
		do
		{
			System.out.println("A左移,D右移,W上移,S下移,请输入你的指令:");
			Scanner sc=new Scanner(System.in);
			String q=sc.nextLine();
			char[] chars=q.toCharArray();
			char p=chars[0];
			if(p=='A')
			{
				if(arr[m][n-1]=='H')
				{
					System.out.println("前方是墙壁,走不通!");
				}
				else
				{
					n=n-1;
				}
			}
			else if(p=='D')
			{
				if(arr[m][n+1]=='H')
				{
					System.out.println("前方是墙壁,走不通!");
				}
				else
				{
					n=n+1;
				}
			}
			else if(p=='W')
			{
				if(arr[m-1][n]=='H')
				{
					System.out.println("前方是墙壁,走不通!");
				}
				else
				{
					m=m-1;
				}
			}
			else if(p=='S')
			{
				if(arr[m+1][n]=='H')
				{
					System.out.println("前方是墙壁,走不通!");
				}
				else
				{
					m=m+1;
				}
			}
			else
			{
				System.out.println("输入无效!");
			}
			//绘制游戏画面
			Arrays.fill(arr[m],n,n+1,'&');
			System.out.println("--------------------");
			for(int i=0;i<8;i++)
			{
				for(int j=0;j<10;j++)
				{
					System.out.print(arr[i][j]+" ");
				}
				System.out.println();
			}
			System.out.println("--------------------");
			Arrays.fill(arr[m],n,n+1,' ');
		}while(!(m==2 && n==2));
		System.out.println("拿到箱子啦!");
		
		//拿到箱子后前往目的地
		do
		{
			System.out.println("A左移,D右移,W上移,S下移,请输入你的指令:");
			Scanner sc=new Scanner(System.in);
			String q=sc.nextLine();
			char[] chars=q.toCharArray();
			char p=chars[0];
			if(p=='A')
			{
				if(arr[m][n-1]=='H')
				{
					System.out.println("前方是墙壁,走不通!");
				}
				else
				{
					n=n-1;
				}
			}
			else if(p=='D')
			{
				if(arr[m][n+1]=='H')
				{
					System.out.println("前方是墙壁,走不通!");
				}
				else
				{
					n=n+1;
				}
			}
			else if(p=='W')
			{
				if(arr[m-1][n]=='H')
				{
					System.out.println("前方是墙壁,走不通!");
				}
				else
				{
					m=m-1;
				}
			}
			else if(p=='S')
			{
				if(arr[m+1][n]=='H')
				{
					System.out.println("前方是墙壁,走不通!");
				}
				else
				{
					m=m+1;
				}
			}
			else
			{
				System.out.println("输入无效!");
			}
			//绘制游戏画面
			Arrays.fill(arr[m],n,n+1,'&');
			System.out.println("--------------------");
			for(int i=0;i<8;i++)
			{
				for(int j=0;j<10;j++)
				{
					System.out.print(arr[i][j]+" ");
				}
				System.out.println();
			}
			System.out.println("--------------------");
			Arrays.fill(arr[m],n,n+1,' ');
		}while(!(m==6 && n==5));
		System.out.println("成功到达目的地,游戏结束!");
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天下弈星~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值