• 关于数组的应用知识


    一:用类定义一个数组

    public class NullPointerArrayExample {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            MyClass[] arr=new MyClass[10];
            arr[2]=new MyClass();
            arr[2].value=100;
            System.out.println(arr[2].value);
            
    
        }
    
    }
    class MyClass{
        public int value=1;
    }

    如果不使用arr[2]=new MyClass();结果就会报错

    出现这个结果,意思是arr[2]没有初始化,没有内容,所以必须加上arr[2]=new MyClass();但是对于int,double这类原始数据类型就不需要。

    二:使用数组创建一个棋盘

    import java.io.*;
    
    public class QiPan
    {
        //定义一个二维数组来充当棋盘
        private String[][] board;
        //定义棋盘的大小
        private static int BOARD_SIZE = 15;
        public void initBoard()
        {
            //初始化棋盘数组
            board = new String[BOARD_SIZE][BOARD_SIZE];
            //把每个元素赋为"╋",用于在控制台画出棋盘
            for (int i = 0 ; i < BOARD_SIZE ; i++)
            {
                for ( int j = 0 ; j < BOARD_SIZE ; j++)
                {
                    board[i][j] = "╋";
                }
            }
        }
        //在控制台输出棋盘的方法
        public void printBoard()
        {
            //打印每个数组元素
            for (int i = 0 ; i < BOARD_SIZE ; i++)
            {
                for ( int j = 0 ; j < BOARD_SIZE ; j++)
                {
                    //打印数组元素后不换行
                    System.out.print(board[i][j]);
                }
                //每打印完一行数组元素后输出一个换行符
                System.out.print("
    ");
            }
        }
        public static void main(String[] args)throws Exception
        {
            QiPan gb = new QiPan();
            gb.initBoard();
            gb.printBoard();
            //这是用于获取键盘输入的方法
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String inputStr = null;
                    System.out.println("请输入您下棋的座标,应以x,y的格式:");
            //br.readLine():每当在键盘上输入一行内容按回车,刚输入的内容将被br读取到。
            while ((inputStr = br.readLine()) != null)
            {
                //将用户输入的字符串以逗号(,)作为分隔符,分隔成2个字符串
                String[] posStrArr = inputStr.split(",");
                //将2个字符串转换成用户下棋的座标
                int xPos = Integer.parseInt(posStrArr[0]);
                int yPos = Integer.parseInt(posStrArr[1]);
                //把对应的数组元素赋为"●"。
                gb.board[xPos - 1][yPos - 1] = "●";                
                /*
                 电脑随机生成2个整数,作为电脑下棋的座标,赋给board数组。
                 还涉及
                    1.座标的有效性,只能是数字,不能超出棋盘范围
                    2.如果下的棋的点,不能重复下棋。
                    3.每次下棋后,需要扫描谁赢了
                 */
                gb.printBoard();
                System.out.println("请输入您下棋的座标,应以x,y的格式:");
            }
        }
    }

    输出结果为:

    这样可以利用二位数组创建一个棋盘,而二维数组就是在一维数组的基础上建立的,可以将二维数组的每一行或者每一列当成一个一维数组,所以二维数组的每一行或者每一列的数据长度可以不一样。

    public class TestTwoDimension
    {
        public static void main(String[] args) 
        {
            //定义一个二维数组
            int a[][];
            //把a当成一维数组进行初始化,初始化a是一个长度为3的数组
            //a数组的数组元素又是引用类型
            a = new int[3][];
            //把a数组当成一维数组,遍历a数组的每个数组元素
            for (int i = 0; i < a.length ; i++ )
            {
                System.out.println(a[i]);
            }
        
            a[0] = new int[2];
            a[0][0] = 1;
            a[0][1] = 2;
            
            //数组的第一个元素是一个一维数组,遍历这个一维数组
            for (int i = 0 ; i < a[0].length ; i ++ )
            {
                System.out.println(a[0][i]);
            }
            
    
        }
    }

    可以参考上面的方法创建二维数组。

    三:将数字转换为大写

    public class Num2Rmb
    {
        private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" , 
            "伍" , "陆" , "柒" , "捌" , "玖"};
        private String[] unitArr = {"十" , "百" , "千","万","十万","百万"};
    
        
    
        /**
         * 把一个四位的数字字符串变成汉字字符串
         * @param numStr 需要被转换的四位的数字字符串
         * @return 四位的数字字符串被转换成的汉字字符串。
         */
        private String toHanStr(String numStr)
        {
            String result = "";
            int numLen = numStr.length();
            //依次遍历数字字符串的每一位数字
            for (int i = 0 ; i < numLen ; i++ )
            {
                //把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
                //因此把char型数字减去48得到int型数字,例如'4'被转换成4。
                int num = numStr.charAt(i) - 48;
                //如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十)
                if ( i != numLen - 1 && num != 0)
                {
                    result += hanArr[num] + unitArr[numLen - 2 - i];
                }
                //否则不要添加单位
                else
                {
                    
                    //上一个数是否为“零”,不为“零”时就添加
                    if(result.length()>0 && hanArr[num].equals("零") && result.charAt(result.length()-1)=='零')
                        continue;
                    result += hanArr[num];
                }
            }
            //只有个位数,直接返回
            if(result.length()==1)
                return result;
            
            int index=result.length()-1;
            while(result.charAt(index)=='零'){
                index--;
            }
            if(index!=result.length()-1)
                return result.substring(0,index+1);
            else {
                return result;
            }
        }
    
        public static void main(String[] args) 
        {        
            Num2Rmb nr = new Num2Rmb();
            System.out.println("只支持整数(0~百万)");
            //测试把一个四位的数字字符串变成汉字字符串
            System.out.println(nr.toHanStr("0"));
            System.out.println(nr.toHanStr("1"));
            System.out.println(nr.toHanStr("10"));
            System.out.println(nr.toHanStr("15"));
            System.out.println(nr.toHanStr("110"));
            System.out.println(nr.toHanStr("123"));
            System.out.println(nr.toHanStr("105"));
            System.out.println(nr.toHanStr("1000"));
            System.out.println(nr.toHanStr("1100"));
            System.out.println(nr.toHanStr("1110"));
            System.out.println(nr.toHanStr("1005"));
            System.out.println(nr.toHanStr("1105"));
            System.out.println(nr.toHanStr("1111"));
            System.out.println(nr.toHanStr("10000"));
            System.out.println(nr.toHanStr("10001"));
            System.out.println(nr.toHanStr("10011"));
            System.out.println(nr.toHanStr("10111"));
            System.out.println(nr.toHanStr("11111"));
            System.out.println(nr.toHanStr("11000"));
            System.out.println(nr.toHanStr("11100"));
            System.out.println(nr.toHanStr("11110"));
            System.out.println(nr.toHanStr("101110"));
            System.out.println(nr.toHanStr("1001110"));
            
        }
    }

    注意要控制0对读数的影响

    四:随机数数组

    import java.util.Random;
    import javax.swing.*;
    public class Sijishu {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int []a=new int[10];
            int i,b=0;
            String m="";
            Random s= new Random();
            for(i=0;i<10;i++)
            {
                a[i]=s.nextInt(100);
                b=b+a[i];
                m+=a[i]+"
    ";
            }
            m=m+"
    "+"这个数组的所有元素的和为:"+b;
            JOptionPane.showMessageDialog( null, m,
                    "Initializing an Array with a Declaration",
                    JOptionPane.INFORMATION_MESSAGE );
    
        }
    
    }

    程序流程图:

     

  • 相关阅读:
    spring mvc请求过程
    MySQL创建数据库与创建用户以及授权
    单击事件的处理方式及注册窗体的创建之(三)注册窗体的创建流程
    单击事件的处理方式及注册窗体的创建之(二)登录业务逻辑的实现
    单击事件的处理方式及注册窗体的创建之(一)按钮单击事件的实现
    界面优化处理技术之(三)登录框表格组件优化处理
    界面优化处理技术之(二)编辑文本框组件优化处理
    核心技术篇:5.android网络编程之pull解析xml
    核心技术篇:4.android网络通信之sax解析xml
    核心技术篇:3.android网络编程之dom解析xml
  • 原文地址:https://www.cnblogs.com/zll20153246/p/6036420.html
Copyright © 2020-2023  润新知