第1關:初始數組
任務描述
本關任務:定義數組,使用數組。
相關知識
問:道友,我要保存4名學生的考試成績,怎么辦?
答:簡單啊,定義四個變量唄。
問:那“計算全年級500名學生的考試成績的平均值”,怎么辦?
答:。。。。
數組:我來。
數組是什么
如果說我們之前使用的變量可以比作是一個裝水的杯子,那么數組你可以看做是一個杯架(只能裝一種杯子的杯架)。
怎么定義數組
變量類型[] 數組名 = {數據1,數據2,數據3,...};
怎么訪問數組中的元素
訪問數組中的元素使用:數組名[索引值]
,索引值一般也叫做數組的下標。
數組名[數組下標]
編程要求
在Begin-End
區域中定義一個int
類型數組 scores
,錄入三個值,91
,88
,60
,最后輸出數組中的三個值,效果如圖:
測試說明
平台會對你編寫的代碼進行測試:若與預期輸出相同,則算通關。
實現代碼
package step1;
public class HelloWorld {
public static void main(String[] args) {
/********** Begin **********/
int[] scores = {91,88,60};
System.out.println("數組的第一個值為:"+scores[0]); //在這里輸出數組的第一個值
System.out.println("數組的第二個值為:"+scores[1]); //在這里輸出數組的第二個值
System.out.println("數組的第三個值為:"+scores[2]); //在這里輸出數組的第三個值
/********** End **********/
}
}
第2關:數組的使用
任務描述
本關任務:使用多種方式定義數組,並輸出數組中的數據。
相關知識
為了完成本關任務你需要掌握:數組初始化的兩種方式,
1.靜態初始化;
2.動態初始化。
靜態初始化
在程序運行前就能確定數組的大小和數組中的初始數據我們稱之為靜態初始化。
例如:
float[] stuScores = {80.0f,70.0f,90.0f,66.5f};
int[] nums = {80,70, 90,66};
char[] chs = {‘a’,’b’, ‘c’,’d’};
動態初始化
數組的大小或數組中數據在程序運行時才能決定,且用到new
這個關鍵字來確定數組的大小或初始數據我們稱之為動態初始化。
定義數組:
變量類型[] 數組名 = new 數據類型 [ 數組長度 ];
定義數組與初始化分離:
賦值:
初始化之后就可以向數組中放數據了,數組中元素都是通過下標來訪問的,例如向 stuScores數組中存放學生成績:
編程要求
使用本關所學知識,根據右側編輯器Begin-End中提示補充代碼,賦值並輸出數組中的信息。
測試說明
我會對你的程序測試兩次:
輸入:3
預期輸出:
數組中的第一個數據為:張三
數組中的第二個數據為:張無忌
數組中的第三個數據為:張三豐
數組中的第四個數據為:張歲山
數組scores的長度為:3
輸入:5
預期輸出:
數組中的第一個數據為:張三
數組中的第二個數據為:張無忌
數組中的第三個數據為:張三豐
數組中的第四個數據為:張歲山
數組scores的長度為:5
實現代碼
package step2;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
/********** Begin **********/
//在這里定義一個長度為4的字符串數組,用來存放學生姓名
String[] stuNames = new String[4];
//在這里給stuNames數組賦值 分別為 張三,張無忌,張三豐,張歲山
stuNames[0] = "張三";
stuNames[1] = "張無忌";
stuNames[2] = "張三豐";
stuNames[3] = "張歲山";
//在這里輸出stuNames數組中的數據
System.out.println("數組中的第一個數據為:" +stuNames[0] );
System.out.println("數組中的第二個數據為:" + stuNames[1]);
System.out.println("數組中的第三個數據為:" + stuNames[2]);
System.out.println("數組中的第四個數據為:" + stuNames[3]);
int[] scores;
Scanner sc = new Scanner(System.in);
//在這里使用Scanner獲取系統輸入的整數,並用獲取到的數據來設置scores數組的長度
int length = sc.nextInt();
scores = new int[length];
/********** End **********/
System.out.println("數組scores的長度為:" + scores.length);
}
}
第4關:數組練習-平均值和最大值
任務描述
本關任務:編寫一個能計算數組平均值和最大值的小程序。
相關知識
為了完成本關任務,你需要知道:
1.如何獲取數組的長度,
2.如何遍歷數組。
獲取數組的長度
數組的length
屬性用於記錄數組中有多少個元素或存儲單元,即記錄數組的長度是多少。
int[] nums = new int[10];//聲明一個int型數組並動態初始化其大小為10
System.out.println(nums.length);//顯示當前數組的大小
輸出:10
遍歷數組
通俗的理解,遍歷數組就是:把數組中的元素都看一遍。
示例如下:
int[] arr = {1,3,5,7,9};
for(int i = 0 ; i<arr.length; i++){
System.out.print(arr[i] + ",");
}
輸出:1,3,5,7,9
如何求出最大值
要求出數組的最大值,是不是很像是打擂台呢?
對於一群人我們不知道誰最厲害,所以我們准備一個擂台,並挑選第一個人為擂主(max),擂台下的人不斷的(循環)來挑戰擂主,如果贏了那挑戰者就是擂主,之前的擂主就下台了,直到沒有挑戰者了,那最后一個擂主就是最厲害的那個了。
編程要求
根據提示,在右側編輯器Begin-End
處補充代碼,計算並輸出數組的平均值和最大值。
測試說明
我會對你編寫的代碼進行測試:
測試輸入:4
,91
,51
,2
,32
;
預期輸出:
平均值:44.0
最大值:91
測試輸入:5
,1
,151
,12
,22
,100
;
預期輸出:
平均值:57.2
最大值:151
提示:
int a = 3;
int b = 2;
System.out.println(a/b);
System.out.println((double)a/b);
輸出:
1
1.5
實驗代碼
package step3;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] scores = new int[sc.nextInt()];
//循環給數組賦值
for(int i = 0 ; i< scores.length;i++){
scores[i] = sc.nextInt();
}
/********** Begin **********/
//在這里計算數組scores的平均值和最大值
float sum = 0;
int max = scores[0];
float avg;
for(int i = 0; i < scores.length; i++){
sum = sum + scores[i];
}
for(int i = 1; i < scores.length; i++){
if(scores[i]>scores[i-1]){
max = scores[i];
}else{
break;
}
}
avg = sum / scores.length;
System.out.println("平均值:"+avg);
System.out.println("最大值:"+max);
/********** End **********/
}
}
第5關:二維數組
任務描述
本關任務:定義二維數組,輸出二維數組中的數據。
相關知識
在實際考試中我們不止考試一門而是多門,那么多門考試的成績我們需要用編程語言來處理時,我們怎么保存這些數據呢?
這就需要用到二維數組了。
二維數組
定義:二維數組是指以一維數組作為元素的數組。
語法:數據類型[行][列] 數組名。
二維數組的初始化
靜態:
動態:
二維數組的使用
訪問數組中的元素:
使用技巧:循環輸出二維數組中的數據。
結果:
編程要求
1.在右側Begin-End區域中定義如下二維數組,使用for循環輸出數組中所有的數據:
2.使用for循環將上述數組中的數據全部改為:
最后輸出修改后scores數組中的數據。
實驗代碼:
package step4;
public class HelloWorld {
public static void main(String[] args) {
/********** Begin **********/
int[][] scores = {{92,85},{91,65},{90,33}};
for(int i=0; i<scores.length; i++){ //行循環次數scores.length(每一列的長度)
for(int j=0; j<scores[i].length; j++){ //列循環次數scores[i].length(每一行的長度)
System.out.println(scores[i][j]);
}
//System.out.println();
}
//scores[][] = {{1,2},{1,2},{1,2}}; //是錯誤的
for(int i=0; i<scores.length; i++){
scores[i][0] = 1;
scores[i][1] = 2;
}
for(int i=0; i<scores.length; i++){ //行循環次數
for(int j=0; j<scores[i].length; j++){ //列循環次數
System.out.println(scores[i][j]);
}
//System.out.println();
}
/********** End **********/
}
}
實驗分析
- 行循環次數scores.length(每一列的長度)
- 列循環次數scores[i].length(每一行的長度)