zoukankan      html  css  js  c++  java
  • 二十六、Java语言之二维数组

    /*
    一、二维数组:
    1.二维数组是一个特殊的以为数组
    2.特殊的一维数组,特殊在这个一维数组中每个元素都是一个一维数组

    */
    二、初始化二维数组:
    //静态初始化二维数组:
    public class Test01 {
    
        public static void main(String[] args){
    
            //静态初始化二维数组
            int[][] a={
                    {1,2,3},
                    {22,33,44},
                    {1},
                    {100,99},
            };
            //以上这个数组有多少个一维数组
            System.out.println(a.length);
    
            //获取第一个一维数组
            System.out.println(a[0][0]);
            //获取最后一个数组的最后一个元素
            System.out.println(a[a.length-1][a[a.length-1].length-1]);
            //遍历
            for(int i=0;i<a.length;i++){
                for (int j=0;j<a[i].length;j++){
                    System.out.print(a[i][j]+ " ");
                }
                System.out.println();
            }
        }
    }

    //动态初始化二维数组:
    public class Test02 {
    
        public static void main(String[] args){
    
            //3个一维数组,每个数组中有4个元素
            int[][] a=new int[3][4];
    
            //遍历
            for(int i=0;i<a.length;i++){
                for(int j=0;j<a[i].length;j++){
                    System.out.print(a[i][j]+" ");
                }
                System.out.println();
            }
            a[1][2]=100;
            //遍历
            for(int i=0;i<a.length;i++){
                for(int j=0;j<a[i].length;j++){
                    System.out.print(a[i][j]+" ");
                }
                System.out.println();
            }
        }
    }

    另一种方式:

    public class Test03 {
    
        public static void main(String[] args) {
    
            m1(new int[][]{{1,2,3},{22,33,44,9},{100,99,0}});
        }
        public static void m1(int[][] a){
            for(int i=0;i<a.length;i++){
                for(int j=0;j<a[i].length;j++){
                    System.out.print(a[i][j]+" ");
                }
                System.out.println();
            }
        }
    }
    例子:
    模拟栈的方式实现:
    Stack
    import org.omg.CORBA.OBJ_ADAPTER;
    
    public class Stack {
        //使用数组存储数据
        //栈可以存储多个引用类型元素
        Object[] elements;
    
        //指向栈顶元素上方的一个帧
        int index;
    
        //栈默认初始化容量是5
        //Constructor
        Stack(){
            this(5);
        }
        Stack(int max){
            elements=new Object[max];
        }
    
        //提供一个对外的压栈方法
        public void push(Object element) throws StackException{
            /*elements[index] =element;
            index++;*/
            if(index==elements.length){
                throw new StackException("栈已满!");
            }
            elements[index++]=element;
    
        }
        //提供一个对外的弹栈方法
        public Object pop() throws StackException{
            /*--index;
            return elements[index];*/
            if(index==0){
                throw new StackException("栈已空!");
            }
            return elements[--index];
        }
    
    }

    自定义异常

    public class StackException extends Exception{
    
        public StackException(){}
        public StackException(String msg){
            super(msg);
        }
    }

    测试程序

    public class StackTest {
        public static void main(String[] args){
    
            Stack s=new Stack();
    
            //压栈
            User u1=new User("Jack",10);
            User u2=new User("TOM",11);
            User u3=new User("Nacy",12);
            User u4=new User("Lucy",13);
            User u5=new User("Mark",14);
            //处理异常
            try{
                s.push(u1);
                s.push(u2);
                s.push(u3);
                s.push(u4);
                s.push(u5);
                s.push(u5);
            }catch(StackException e){
                System.out.println(e.getMessage());}
    
            //弹栈
            try{
                System.out.println(s.pop());
                System.out.println(s.pop());
                System.out.println(s.pop());
                System.out.println(s.pop());
                System.out.println(s.pop());
                System.out.println(s.pop());
                System.out.println(s.pop());
            }catch (StackException e){
                System.out.println(e.getMessage());
            }
    
        }
    
    }
    class User{
        String name;
        int age;
        User(String name,int age){
            this.name=name;
            this.age=age;
        }
    
        //重写toString方法
        public String toString(){
            return "User[name="+name+",age="+age+"]";
        }
    }

    测试结果:

    栈已满!
    User[name=Mark,age=14]
    User[name=Lucy,age=13]
    User[name=Nacy,age=12]
    User[name=TOM,age=11]
    User[name=Jack,age=10]
    栈已空!


     
  • 相关阅读:
    Python 正则表达式匹配两个指定字符串中间的内容
    Switch Case 和 If Else
    MYSQL LETT/RIGHT/INNER/FUll JOIN 注意事项
    MYSQL 批处理 Packet for query is too large
    Junit单元测试不支持多线程
    postman中 form-data、x-www-form-urlencoded、raw、binary的区别
    一个项目中:只能存在一个 WebMvcConfigurationSupport (添加swagger坑)
    Nginx 转发特点URL到指定服务
    基于UDP协议的程序设计
    TcpClient类与TcpListener类
  • 原文地址:https://www.cnblogs.com/chushujin/p/10163925.html
Copyright © 2011-2022 走看看