一、数独
将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("成功到达目的地,游戏结束!");
}
}