zoukankan      html  css  js  c++  java
  • Java程序设计基础 数组-3

      继续我们数组的分享。

      我们一旦定义了数组,数组中就有了很多这种类型的变量,数组中的每一个元素都是那种类型的变量,而我们访问他们的时候是通过索引或者说是通过下标来访问的,索引或者下标一定是整数,从 0 开始的。

      如果说我们定义 i ,int i ; 我们得到有那么一个叫做 i 的地方,里面我们可以放一些数,如果说 i = 5;那么我们就把 5 放进去了 。

      现在比如说有一个数组  int[] a = new int[10];  这个时候我们就不是那么一个地方了,我们有十个这样的地方,每一个地方里面都是一个 int ,每一个地方都有一个编号,这个编号从 0 开始,0号、1号、... 一直到9号,如果我们说 a[0] = 5;  那么就是我们在 0 号地方放了一个5。

      数组就是这样一种东西,它里面就是很多一种类型的变量,每一个变量都是通过数字编号来访问它的,编号是从 0 开始的,一直到 数组个数-1 为止,最大的下标是 数字个数-1。对于数组来说有效的下标是从0 开始的,最小的是 0 ,最大的是  数组个数-1。可是我们的编译器是不检查有效下标的。比如:

      我们之前定义了 numbers 数组,现在我们写 numbers[-1] = 10;  编译器没有报错;

      再写一个 numbers[100] = 10;  我们知道 100 都已经超出了,最大只有99,还是没有报错,编译器不来检查这件事情。可是如果我们运行这个程序,马上他会抛出异常:

      这个异常叫做数组的索引溢出了边界,在第11行。

      前面的这个程序我们说可能涉及到很多数字会越界,是危险的,因为我们创建了 100  个这样的类型的 数组,cnt一直+1,如果没有一定的限制cnt会超过一百的,所以说只要cnt超过一百,我们这个程序就会抛出异常了,我们事先不知道用户会输入的多少个数字,只是用-1来标志输入结束,直接定义100个 这样做是危险的,怎么做才是安全的呢。

      在之前我们提到过在创建数组的时候我们不是一定要给一个常数的,数组大小完全可以是个变量,也就是说我们可以换一个思路,我们不是让用户输入-1标志着结束,而是让用户输入一个数,让用户告诉我们说这一次他要输入多少个数,然后我们根据这个数来决定这个数组该开多大,然后在把数据读进来。以下是我们完成这个功能的代码:

    package exercise;
    import java.util.Scanner;
    public class Average {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            Scanner in = new Scanner(System.in);
            System.out.print("请输入想要输入数据的个数:");
            double sum = 0;
            int cnt = in.nextInt();
            if(cnt > 0)
            {
                int[] numbers = new int[cnt]; 
                for(int i = 0;i < cnt;i++)
                {
                    numbers[i] = in.nextInt();
                    sum += numbers[i];
                }
                double average = sum/cnt;
                for(int i = 0 ;i < cnt ;i++)
                {
                    if (numbers[i] >= average)
                    {
                        System.out.println(numbers[i]);
                    }
                }
                System.out.println("the average is :" + average);
            }
        }
    }

    程序运行结果为:

    请输入想要输入数据的个数:10
    1 2 3 4 5 6 7 8 9 10
    6
    7
    8
    9
    10
    the average is :5.5

  • 相关阅读:
    C# 自定义泛型类,并添加约束
    WPF DataGrid 的RowDetailsTemplate的使用
    jquery腾讯微博
    WPF DataGrid的LoadingRow事件
    WPF DataGrid自定义列DataGridTextColumn.ElementStyle和DataGridTemplateColumn.CellTemplate
    WPF DataGrid支持的列类型
    WPF DataGrid自动生成列
    WPF DataTemplateSelector的使用
    WPF数据模板的数据触发器的使用
    UVa 1601 || POJ 3523 The Morning after Halloween (BFS || 双向BFS && 降维 && 状压)
  • 原文地址:https://www.cnblogs.com/yuyang-gr/p/6692280.html
Copyright © 2011-2022 走看看