美文网首页
带你走进Java数组世界

带你走进Java数组世界

作者: 古拉啦啦 | 来源:发表于2019-08-06 21:50 被阅读0次

    跟C语言一样,数组在java中也是中重要的数据结构,在Java 语言中提供的数组跟C语言中的相同,但又有点小小的区别,我们小面就会讲到。你可以声明一个数组变量,如 num[100] 来代替直接声明 100 个独立变量 num有的子怒骂num0,num1,....,num99。
    本教程将为大家介绍 Java 数组的声明、创建和初始化,并给出其对应的代码。

    一、数组的声明和两种定义方式

    1, 声明数组变量

    首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

    dataType[] arrayRefVar; // 首选的方法

    datatype arryRefVar [ ] ;

    dataType arrayRefVar[]; // 效果相同,但不是首选方法

    1, 数组的定义:

    1, 静态方式

    dataType[] arrayRefVar = { };

    例如:

    int [ ] score = { 90,78,89,94,65};

    String [ ] = {"jftr","jiuk","java"};

    2, 动态方式

    Java语言使用new操作符来创建数组,语法如下:

    dataType[] arrayRefVar = new dataType [size];

    例如:

    int [ ] score = new int [5];
    score[0] = 90;
    score[1] = 78;
    score[2] = 89;
    score[3] = 95;
    score[4] = 65;

    上面的语法语句有两个功能:

    一、使用 dataType[arraySize] 创建了一个数组。

    二、把新创建的数组的引用赋值给变量 arrayRefVar。

    需要注意的是,数组一旦被定义就无法修改数组的大小

    3、数组的使用:

    接下来我们来个数组试试Java中的数组。

     public class TestArray {
     public static void main(String[] args) {
      // 数组大小
      int size = 10;
      // 定义数组
      double[] myArry = new double[size];
      myArry[0] = 5.6;
      myArry[1] = 4.5;
      myArry[2] = 3.3;
      myArry[3] = 13.2;
      myArry[4] = 4.0;
      myArry[5] = 34.33;
      myList[6] = 34.0;
      myList[7] = 45.45;
      myList[8] = 99.993;
      myList[9] = 11123;
      // 计算所有元素的总和
      double total = 0;
      for (int i = 0; i < size; i++) {
         total += myArry[i];
      }
      System.out.println("总和为: " + total);
     }
    }
    

    下面的图片描绘了数组 myArry。这里 myArry数组里有 10 个 double 元素,它的下标从 0 到 9。


    二、遍历数组的三种方式

    假如有数组int [ ]count = {1,2,3,4,5,6,7,8,9,1};

    则数组的输出方式有如下三种:

    1, 数组输出方式1

    传统的for循环方式

           for (int i = 0; i < 10; i++){
            System.out.print(count[i]+" ");
        }
        System.out.println();
    

    2, 数组输出方式2

    for each 循环

        for (int temp: count){
            System.out.print(temp + " ");
        }
        System.out.println();
    

    3, 数组输出方式3

    利用Array类中的toString方法调用Array.toString(a),返回一个包含数组元素的字符串,这些元素被放置在括号内,并用逗号分开

        System.out.println(Arrays.toString(count));
     }
    

    说明:System.out.println(count);这样是不行的,这样打印是的是数组的首地址。

    前面我们有C语言写了一个数字游戏,今天带领大家有java来感受一下。
    首先来说一下这个游戏要求:

    1, 随机产生4个不相同的数字
    2, 玩家开始输入四个数字
    3, 如果位置正确且数字正确用A输出
    4, 如果数字正确位置不正确用B输出B

    如:随机产生的四个数字为: 1 2 3 4
    玩家输入的数字为: 1 2 4 6
    则提示:2A1B

    java代码如下:

    class GuessNumber{
    public static void main(String[] args){
        //保存原始数字
        int[] org = new int[4];
        //保存用户猜测的数字
        int[] guess = new int[4];
    
        //产生4个随机数
        Random random = new Random();
        for (int i = 0; i < 4; i++){
            //产生一个随机数
            int temp = random.nextInt(10);
    
            //判断是否存在
            boolean result = contains(org, temp);
    
            if (result){
                //确保i对应的位置能够得到一个不重复的数字
                i--;
            }else{
                org[i] = temp;
            }
        }
    
        //排序
        Arrays.sort(org);
    
        System.out.println(Arrays.toString(org));
    
        //定义一个扫描仪对象Scanner
        Scanner scanner = new Scanner(System.in);
        //开始游戏
        while(true){
            int countA = 0;
            int countB = 0;
    
            System.out.print("请输入猜测的数字:");
    
            for (int i = 0; i < 4;i++){
                guess[i] = scanner.nextInt();
            }
    
            //判断用户输入
            //1.判断是否存在
            for (int i = 0; i < 4; i++) {
                boolean result =contains(guess, org[i]);
                if(result == true){
                    //数字存在
                    //判断位置是否相同
                    int index = indexOf(guess, org[i]);
    
                                 if (index == i){
                        //数字和位置都相同
                        countA++;
                    } else{
                        countB++;
                    }
                }
            }
    
            if (countA == 4){
                System.out.println("恭喜全对!");
                break;
            }else{
                System.out.println(countA+"A"+countB+"B");
            }
        }
    }
    
    /**
     * 在一个数组里面查找某个对象的索引值
     * @param val 数组
     * @param obj 查找的对象
     * @return 索引值
     */
    public static int indexOf(int[] val, int obj){
        for (int i = 0; i < val.length; i++){
            if (val[i] == obj){
                return i;
            }
        }
        return -1;
    }
    
    //自己写一个方法实现 判断某个数组里面是否包含某个值
    public static boolean contains(int[] val, int obj){
        for (int i = 0; i < val.length; i++){
            if (val[i] == obj){
                //重复了
                return true;
            }
        }
        return false;
     }
    }
    

    运行结果如下:


    寄语读者

    从C到java是有一个过度阶段的,一个面向过程,一个面向对象,是有区别的,现在还没找到学习java的同学,希望你们不要焦急,只要你在一步一个脚印地走,总会找到学习的方法,学好java 的,祝所有读者每天都能快乐地学习!好了,小编今天的分享就到此了,我们明天见!

    相关文章

      网友评论

          本文标题:带你走进Java数组世界

          本文链接:https://www.haomeiwen.com/subject/zufgdctx.html