zoukankan      html  css  js  c++  java
  • 一维数组的使用

    1.什么是数组?
            数组是一种特殊的类型,数组的"地址"是首地址,他的值也是首地址。虽然值相同但是类型是不同的。
    1.1如何定义一个数组
    /**
     * 
     * @author sadfoo @date 2018年8月31日
     * @tips:数组申明、遍历
     */
    public class TestArray {
    
        public static void main(String[] args) {
            // 数组申明或者定义有2种方式:
    
            // 数组申明
            String[] names;
            // 第一种:静态初始化,初始化数组与给元素赋值同时进行
            names = new String[] { "数组001", "数组002", "数组003" };
    
            // 数组申明
            int score[];
            // 第二种:动态初始化,初始化数组与给元素赋值分开进行
            score = new int[4];
            // 通过数组元素下角标调用,数组从0开始,n-1结束(n表示数组的长度)
            score[0] = 87;
            score[1] = 88;
            score[3] = 99;
    
            // 数组的长度,通过数组的length属性来调用
            System.out.println("names的分配空间长度为:" + names.length);
            System.out.println("score的分配空间长度为:" + score.length);
            // 如何遍历数组元素
            // NO1:直接打印脚标遍历(累赘)
            System.out.println("我是names第一种数组遍历方式 :");
            System.out.println(names[0]);
            System.out.println(names[1]);
            System.out.println(names[2]);
            System.out.println("我是score第一种数组遍历方式 :");
            System.out.println(score[0]);
            System.out.println(score[1]);
            System.out.println(score[3]);
            // NO2:循环方法遍历(优选)
            System.out.println("我是names第二种数组遍历方式 :");
            for (int i = 0; i < names.length; i++) {
                System.out.println(names[i]);
            }
            System.out.println("我是score第二种数组遍历方式 :");
            for (int i = 0; i < score.length; i++) {
                System.out.println(score[i]);
            }
        }
    
    }

    遇到问题:数组下标越界异常

     1.2默认初始化值

    // 对于基本数据类型:byte、short、int、long而言,初始默认值为:0
            byte[] bt = new byte[6];
            // 假设赋一个值
            bt[0] = 90;
            bt[5] = 99;
            for (int i = 0; i < bt.length; i++) {
                System.out.println("byte默认值为:" + bt[i]);
            }
            // 对于基本数据类型:float、double而言,初始默认值为:0.0
            float[] ft = new float[7];
            // 假设赋二个值
            ft[1] = 12f;
            ft[3] = 12f;
            for (int i = 0; i < ft.length; i++) {
                System.out.println("float默认值为:" + ft[i]);
            }
            // 对于基本数据类型:char而言,初始默认值为:空格
            char[] cr = new char[8];
            for (int i = 0; i < cr.length; i++) {
                System.out.println("char默认值为:" + cr[i]);
            }
            // 对于基本数据类型:boolean而言,初始默认值为:false
            boolean[] bl = new boolean[9];
            for (int i = 0; i < bl.length; i++) {
                System.out.println("boolean默认值为:" + bl[i]);
            }
            // 对于引用类型的变量构成的数据而言,初始默认值为:null
            // 数组申明
            String[] sr = new String[10];
    
            sr[0] = "AA";
            sr[1] = "BB";
            sr[3] = "DD";
            for (int i = 0; i < sr.length; i++) {
                System.out.println("引用类型默认值为:" + sr[i]);
            }

    1.3数组练习题

    import java.util.Scanner;
    
    /**
     * 
     * @author sadfoo @date 2018年9月1日
     * @tips:练习一维数组的使用
     */
    public class TestStudentScore {
    
        @SuppressWarnings("resource")
        public static void main(String[] args) {
            /**
             * 从键盘读入学生成绩,找出最高分,并输出学生成绩等级, 成绩>=最高分-10:等级为'A' ,成绩>=最高分-20:等级为'B',
             * 成绩>=最高分-30:等级为'C' ,其余:等级为D
             */
            // 创建scanner对象,并从键盘获取学生的个数n
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入学生的个数:");
            int count = sc.nextInt();// count用来记录学生的个数
            // 根据输入的学生个数n,创建一个长度为n的int型数组
            int[] scores = new int[count];
            int maxScore = 0;
            // 依次从键盘获取n个学生的成绩,并赋给相应的数组元素,并获取n个学生的最高分
            System.out.println("请依次输入"+count+"个学生的成绩:");
            for (int i = 0; i < scores.length; i++) {
                int score = sc.nextInt();// 依次从键盘获取学生的成绩
                scores[i] = score;
                if (scores[i] > maxScore) {
                    maxScore = scores[i];
                }
            }
            // 遍历学生成绩的数组,并根据学生成绩最高分的差值赋予相应的等级并输出
            System.out.println("最高分值为:" + maxScore);
            for (int i = 0; i < scores.length; i++) {
                char level;
                if (scores[i] > maxScore - 10) {
                    level = 'A';
                } else if (scores[i] > maxScore - 20) {
                    level = 'B';
                } else if (scores[i] > maxScore - 30) {
                    level = 'C';
                } else {
                    level = 'D';
                }
                System.out.println("student " + i + ",score is " + scores[i] + ",grade is " + level);
            }
        }
    
    }
    /**
     * 
     * @author sadfoo @date 2018年9月1日
     * @tips:求一个二维数组里所有数之和
     */
    public class TestGetSum {
    
        public static void main(String[] args) {
            // 创建一个二维数组并赋值(根据情况采用静态还是动态赋值)
            int[][] m = new int[][] { { 1, 2, 3 }, { 4, 5 }, { 6 } };
            // 创建sum记录总和
            int sum = 0;
            //遍历数组
            for (int i = 0; i < m.length; i++) {
                for (int j = 0; j < m[i].length; j++) {
                    System.out.println(m[i][j] + "	");
                    sum += m[i][j];
                }
                System.out.println();
            }
            System.out.println("所有二维数组的和值尾:"+sum);
        }
    
    }
  • 相关阅读:
    Git一些简单但非常重要并常用的操作命令
    利用fastjson解析json并通过js&ajax实现页面的无跳转刷新
    利用Graphviz绘制逻辑关系依赖图
    oracle导入.dmp文件
    Linux查找当前目录5天的文件并打包
    Web安全相关(三):开放重定向(Open Redirection)
    Web安全相关(二):跨站请求伪造(CSRF/XSRF)
    Web安全相关(一):跨站脚本攻击(XSS)
    密码学应用(DES,AES, MD5, SHA1, RSA, Salt, Pkcs8)
    行为驱动开发(BDD)实践示例
  • 原文地址:https://www.cnblogs.com/sadfoo/p/9563536.html
Copyright © 2011-2022 走看看