方法与数组之二维数组及五子棋算法+面向对象的概念

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 方法与数组之二维数组及五子棋算法+面向对象的概念
    • 一、二维数组
      • 1.含义:二维数组中包含了多个一维数组
      • 2.声明:数据类型[][] 数组名
      • 3.静态初始化:数据由程序员指定,长度由系统自动分配
      • 4.动态初始化:长度由程序员指定,数据由系统自动分配默认值
      • 5.需求:使用动态初始化创建二维数组,二维数组有两个一维数组,第一个一维数组有3个元素,第二个一维数组有4个元素
    • 二、五子棋算法
    • 三、面向对象的理解
      • 1.需求:创建人类,再创建人类的对象,并操作对象
      • 2.分析:
        • 1.创建人类,编写人类中的属性和方法
        • 2.在测试类中创建人类的对象
        • 3.操作对象
      • 4.扩展
        • 测试类 特点:有main方法


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着小白菜的不断学习,java这门技术也越来越重要,很多人都开启了学习基础知识梳理,本文就介绍了java学习的基础内容。编写了一个简易的五子棋算法


提示:以下是本篇文章正文内容,下面案例可供参考

方法与数组之二维数组及五子棋算法+面向对象的概念

一、二维数组

1.含义:二维数组中包含了多个一维数组

2.声明:数据类型[][] 数组名

3.静态初始化:数据由程序员指定,长度由系统自动分配

public class 文件名{
    public static void main(String[] args){
        //静态初始化
        //String[][] names = new String[][]{{"萧炎","林动","石昊"},{"赵日天","晓星尘","龙傲天","胡奇"}};
        
        //静态初始化2 - 先声明,在初始化
        //String[][] names;
        //names = new String[][]{{"萧炎","林动","石昊"},{"赵日天","晓星尘","龙傲天","胡奇"}};
        
        //设置指定下标上的元素
        names[1][0] = "高炎";
        
        //获取指定下标上的元素
        String n = names[1][0];
        System.out.println("获取指定下标上的元素:" + n);
        
        	    //获取个数
		System.out.println("获取二维数组中一维数组的个数:" + names.length);//2
		System.out.println("获取二维数组中第一个一维数组元素的个数:" + names[0].length);//3
		System.out.println("获取二维数组中第二个一维数组元素的个数:" + names[1].length);//4
		
		System.out.println("-------------------");
		
		//遍历思路:先遍历二维数组中的一维数组,再遍历一维数组中的元素
		
		//遍历  - for循环
		for (int i = 0; i < names.length; i++) {
			for (int j = 0; j < names[i].length; j++) {
				System.out.println(names[i][j]);
			}
		}
		
		System.out.println("-------------------");
		
		//遍历 - foreach
		for (String[] ss : names) {
			for (String element : ss) {
				System.out.println(element);
			}
		}
	}
}

4.动态初始化:长度由程序员指定,数据由系统自动分配默认值

整数类型:0

浮点类型:0.0

字符类型:’ ’

布尔类型:false

引用类型:null - 空

public class 文件名 {
		public static void main(String[] args) {
			
		
	//动态初始化1
	//String[][] names = new String[2][3];//2个一维数组,3-每个一维数组中有3个元素
	
	//动态初始化2 - 先声明,在初始化
	String[][] names;
	names = new String[2][3];
	
	//设置指定下标上的元素
	names[0][0] = "唐三1";
	names[0][1] = "唐三2";
	names[0][2] = "唐三3";
	names[1][0] = "唐三4";
	names[1][1] = "唐三5";
	names[1][2] = "唐三6";
	
	//获取指定下标上的元素
	String n = names[1][0];
	System.out.println("获取指定下标上的元素:" + n);
	
	//获取个数
	System.out.println("获取二维数组中一维数组的个数:" + names.length);//2
	System.out.println("获取二维数组中第一个一维数组元素的个数:" + names[0].length);//3
	System.out.println("获取二维数组中第二个一维数组元素的个数:" + names[1].length);//4
	
	System.out.println("-------------------");
	
	//遍历思路:先遍历二维数组中的一维数组,再遍历一维数组中的元素
	
	//遍历  - for循环
	for (int i = 0; i < names.length; i++) {
		for (int j = 0; j < names[i].length; j++) {
			System.out.println(names[i][j]);
		}
	}
	
	System.out.println("-----------------------");
	
	//遍历 - foreach
	for (String[] ss : names) {
		for (String element : ss) {
			System.out.println(element);
		}
	}
	
 }
}

5.需求:使用动态初始化创建二维数组,二维数组有两个一维数组,第一个一维数组有3个元素,第二个一维数组有4个元素

public class 文件名 {
      public static void main(String[] args) {
	        
    	  //创建二维数组
    	  String[][] names = new String[2][];
    	  
    	  //创建第一个一维数组
    	  String[] ss1 = new String[3];
    	  ss1[0] = "小白兔1";
    	  ss1[1] = "小白兔2";
    	  ss1[2] = "小白兔3";
    	  
    	  
    	  
    	//创建第二个一维数组
    	  String[] ss2 = new String[4];
    	  ss2[0] = "大灰狼1";
    	  ss2[1] = "大灰狼2";
    	  ss2[2] = "大灰狼3";
    	  ss2[3] = "大灰狼4";
    			  
    	  //将第一个一维数组赋值给二维数组中下标为0的位置
    	  names[0] = ss1;
    	  
    	  //将第二个一维数组赋值给二维数组中下标为0的位置
    	  names[1] = ss2;
    	  
    	  //遍历二维数组
    	  for (String[] ss : names) {
			for (String element : ss) {
				System.out.println(element);
			}
		}
    			  
    }
}

二、五子棋算法

import java.util.Scanner;

public class 文件名 {
	public static void main(String[] args) {
		
		//定义长度
		int len = 20;
		//棋盘容器
		String[][] goBang = new String[len][len];
		//定义棋盘符号
		String add = "╋";
		String black = "■";
		String white = "○";
	//坐标的容器
		String[] indexs = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"};
		
		//初始化棋盘容器中的符号---------------------------------------------
			/**解决方案1:
			//循环取出二维数组中的一维数组
				for (int i = 0; i < goBang.length; i++) {
					//把当前一维数组的每个元素都替换成加号
					Arrays.fill(goBang[i], add);
					
					//设置每个一维数组最后一个元素为坐标
					goBang[i][len-1] = indexs[i];
				}
		//循环遍历二维数组中最后一个一维数组的元素,并设置坐标
		for (int i = 0; i < goBang[len-1].length; i++) {
			goBang[len-1][i] = indexs[i];
		}
			*/
		
		//解决方案2:
		for (int i = 0; i < goBang.length; i++) {
			for (int j = 0; j < goBang[i].length; j++) {
				if(j == len-1){//每行的最后一列
					goBang[i][j] = indexs[i];
				}else if(i == len-1){//最后一行
					goBang[i][j] = indexs[j];
				}else{
					goBang[i][j] = add;
				}
			}
		}
		
		//----------------------------------------------------------------
		
	//打印棋盘
	for (String[] ss : goBang) {
		for(String element : ss){
			System.out.print(element);
	}
		System.out.println();

	}
	
	//循环输入的坐标
	Scanner scan = new Scanner(System.in);
	boolean flag = true;//true-黑子,flase-白子
	while(true){
		System.out.println("请" + ((flag)?"黑":"白") + "子输入坐标(x,y):");
		int x = scan.nextInt()-1;//坐标从1开始,下标从0开始,所以要减1
		int y = scan.nextInt()-1;//坐标从1开始,下标从0开始,所以要减1
		
		//判断坐标是否超出棋盘范围
		if (x < 0 || x > len-2 ||y < 0 ||y > len-2) {
			System.out.println("输入错误 - 坐标超出棋盘范围,请重新输入...");
			continue;
			
		}
		
		//判断坐标上是否有棋子
		if (!goBang[x][y].equals(add)) {
			System.out.println("输入错误 - 坐标有棋子,请重新输入...");
			continue;
			
		}
		
		//落子
		goBang[x][y] = (flag)?black:white;
		
		//置反
		flag = !flag;
		
		//打印棋盘
		for (String[] ss : goBang) {
			for (String element : ss) {
				System.out.print(element);
			}
			System.out.println();
		
	 }
	}
  }
}

三、面向对象的理解

1.需求:创建人类,再创建人类的对象,并操作对象

2.分析:

1.创建人类,编写人类中的属性和方法

2.在测试类中创建人类的对象

3.操作对象

public class 文件名 {
	public static void main(String[] args) {
			
			//创建人类的对象
			Person p = new Person();
			
			//设置属性
			p.name = "兰岚";
			p.sex = '女';
			p.age = 500;
			
			//获取属性
			System.out.println(p.name);
			System.out.println(p.sex);
			System.out.println(p.age);
			
			//调用方法
			p.eat();
			p.sleep();
		}
}
//人类
public class Person {
	
	//属性
	String name;
	char sex;
	int age;
	
	//方法
	public void eat(){
		System.out.println("吃饭饭");
	}
	
	public void sleep(){
		System.out.println("睡觉觉");
	}
}

4.扩展

测试类 特点:有main方法

你可能感兴趣的:(Java基础,算法,java,数据结构,开发语言,学习)