Java 数组

一维数组

 //静态初始化一个数组,不能指定数组长度
        int[] arr1=new int[]{1,2,3,4,5};
        //可简写为  int[] arr1={1,2,3,4,5};

        //动态初始化一个数组,先指定数组长度,以后再逐个赋值
        int[] arr2=new int[5];
        arr2[0]=1;

        //也可以先声明,再初始化
        //int[] arr3;
        //arr3=.......

        //数组长度
        System.out.println("数组arr1的长度:"+arr1.length);

        /*
        foreach循环可以遍历数组、集合,但只能访问元素的值,不能修改。
        数组的元素类型必须相同,集合的元素类型可以不同
        临时变量表示当前元素
         */
        for(int i:arr1){
            System.out.println(i);
        }

二维数组

        //每行的元素个数可不同

        //静态初始化一个二维数组,每行都是一个一维数组
        int[][] arr1=new int[][]{
                {1,2},
                {1,2,3},
                {1,2,3,4,5}
        };

        //动态初始化一个二维数组,只需指定行数,列数可缺省,也可写上,以后再逐个元素赋值
        int[][] arr2=new int[3][];

        //同样可以先声明,再初始化
        //int[][] arr3;
        //arr3=.....

JDK8自带的Arrays类

JDK8自带的Arrays类,提供了大量操作数组的方法,包括索引、排序、比较、赋值、复制等,均为静态方法。
以parallel开头的方法和缺少此前缀的方法效果完全相同,只是parallel开头的方法利用CPU的并行提高了效率,速度更快
View -> Quick Documentation 查看方法说明的快捷键,IDEA为Ctrl+Q

        int[] arr1={1,3,2,5,4};

        //复制
        int[] arr2=Arrays.copyOf(arr1,arr1.length);

        //二分搜索,第二个参数是要搜索的值,返回的索引可能是负数——倒着搜索
        System.out.println(Arrays.binarySearch(arr1,2));

        //排序
        Arrays.sort(arr1);
        for(int i:arr1){
            System.out.print(i+" ");
        }

        System.out.println();

        //并行排序
        Arrays.parallelSort(arr2);
        for(int i:arr2){
            System.out.print(i+" ");
        }

        System.out.println();

数组实例——将阿拉伯数字转换为最大写

将阿拉伯数字转换为最大写,比如1234转换为壹仟贰佰叁拾肆。

 1 package my_package;
 2 
 3 
 4 public class Transform {
 5     private String[] arr1={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
 6     private String[] arr2={"拾","佰","仟","万"};
 7 
 8     public static void main(String[] args) {
 9         Transform t=new Transform();
10         System.out.println(t.transform(12345));
11     }
12 
13     public StringBuffer transform(int num){
14         String str=Integer.toString(num);
15         int length=str.length();
16         StringBuffer result=new StringBuffer();
17         //遍历字符串的每一个字符
18         for(int i=0;i<length;i++){
19             //char型数值-相应的阿拉伯数字=48,ASCII码值相差48。比如'3'-3=48
20             int n=str.charAt(i)-48;
21             //刚好是对应的
22             result.append(arr1[n]);
23 
24             //不是最后一位,且不为0,就加单位
25             if(i!=length-1 && n!=0){
26                 result.append(arr2[length-i-2]);
27             }
28 
29         }
30         return  result;
31     }
32 
33 }

以上代码只能实现 万 及以下 的转换。


数组实例——实现棋盘落子

五子棋、连连看、俄罗斯方块、扫雷等常见小游戏,都可以通过二维数组实现。

棋盘落子效果图:

 

     

 

源码:

package my_package;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Gobang {
    //定义棋盘大小为15*15
    private static int BOARD_SIZE=15;
    //定义一个二维数组来充当棋盘
    private static String[][] board;

    //初始化棋盘数组
    public void  initBoard(){
        board=new String[BOARD_SIZE][BOARD_SIZE];
        //把每个元素赋为“十”
        for(int i=0;i<15;i++){
            for(int j=0;j<15;j++){
                board[i][j]="十";
            }
        }
    }

    //在控制台打印棋盘
    public void printBoard(){
        for(int i=0;i<15;i++){
            for(int j=0;j<15;j++){
                System.out.print(board[i][j]);
            }
            //打印完一行后换行
            System.out.print("
");
        }
    }

    public static void main(String[] args) throws IOException {
        Gobang gb=new Gobang();
        gb.initBoard();
        gb.printBoard();

        //接收控制台输入棋盘坐标
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String str=null;
        System.out.println("请输入落子点的坐标:");
        while((str=br.readLine()) !=  null){
            String[] arr=str.split(",");
            int x=Integer.parseInt(arr[0]);
            int y=Integer.parseInt(arr[1]);

            //需要先判断该点是否已有子,若已有子,则不能再落子。此处省略

            board[x-1][y-1]="●";
            //刷新
            gb.printBoard();;

            //每次落子后需判断输赢,进行4次循环扫描,横、竖、左斜、右斜,看是否有5子连着,没有就接着下。此处省略

            System.out.println("请输入落子点的坐标:");
        }
    }


}
原文地址:https://www.cnblogs.com/chy18883701161/p/10852094.html