標籤:數字 限制 程式設計基礎 exe 通過 建立 i++ new 設計
繼續我們數組的分享。
我們一旦定義了數組,數組中就有了很多這種類型的變數,數組中的每一個元素都是那種類型的變數,而我們訪問他們的時候是通過索引或者說是通過下標來訪問的,索引或者下標一定是整數,從 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
Java程式設計基礎 數組-3