• 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("请输入落子点的坐标:");
            }
        }
    
    
    }
  • 相关阅读:
    Appium(一):java环境、AndroidSDK环境
    SQL Server Merge语句的使用
    ASP.NET MVC下判断用户登录和授权的方法
    javascript的错误处理
    javascript的封装实例
    Javascript的封装
    ASP.NET MVC的请求生命周期
    Asp.Net页面生命周期
    SQL注入原理
    ASP.NET MVC:窗体身份验证及角色权限管理示例
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/10852094.html
Copyright © 2020-2023  润新知