java数组的四个要素_Java零基础系列教程04Java数组
配套視頻教程
問題Java考試結(jié)束后,老師給張浩分配了一項(xiàng)任務(wù),讓他計(jì)算全班(30人)的平均分int stu1 = 95;
int stu2 = 89;
int stu3 = 79;
int stu4 = 64;
int stu5 = 76;
int stu6 = 88;
……
avg = (stu1+stu2+stu3+stu4+stu5…+stu30)/30;
數(shù)組
數(shù)組是一個(gè)變量,存儲(chǔ)相同數(shù)據(jù)類型的一組數(shù)據(jù)
聲明一個(gè)變量就是在內(nèi)存空間劃出一塊合適的空間
聲明一個(gè)數(shù)組就是在內(nèi)存空間劃出一串連續(xù)的空間
數(shù)組基本要素標(biāo)識(shí)符:數(shù)組的名稱,用于區(qū)分不同的數(shù)組
數(shù)組元素:向數(shù)組中存放的數(shù)據(jù)
元素下標(biāo):對(duì)數(shù)組元素進(jìn)行編號(hào),從0開始,數(shù)組中的每個(gè)元素都可以通過下標(biāo)來訪問
元素類型:數(shù)組元素的數(shù)據(jù)類型
數(shù)組長(zhǎng)度固定不變,避免數(shù)組越界
數(shù)組中的所有元素必須屬于相同的數(shù)據(jù)類型
使用數(shù)組步驟:
聲明數(shù)組: 告訴計(jì)算機(jī)數(shù)據(jù)類型是什么int[ ] score1; //Java考試成績(jī)
int score2[ ]; //oracle考試成績(jī)
String[ ] name; //學(xué)生姓名
分配空間: 告訴計(jì)算機(jī)分配幾個(gè)連續(xù)的空間score = new int[30];
avgAge = new int[6];
name = new String[30];
聲明數(shù)組并分配空間
數(shù)據(jù)類型[ ] 數(shù)組名 = new 數(shù)據(jù)類型[大小] ;
賦值:向分配的格子里放數(shù)據(jù)
score[0] = 89;
score[1] = 79;
score[2] = 76;
……
方法1: 邊聲明邊賦值
int[ ] score = {89, 79, 76};
int[ ] score = new int[ ]{89, 79, 76};方法2:動(dòng)態(tài)地從鍵盤錄入信息并賦值
Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){score[i] = input.nextInt();
}4. 對(duì)數(shù)據(jù)進(jìn)行處理:計(jì)算5位學(xué)生的平均分
int [ ] score = {60, 80, 90, 70, 85};
double avg;
avg = (score[0] + score[1] + score[2] + score[3] + score[4])/5;訪問數(shù)組成員:使用“標(biāo)識(shí)符[下標(biāo)]”
int [ ] score = {60, 80, 90, 70, 85};
int sum = 0;
double avg;
for(int i = 0; i < score.length; i++){sum = sum + score[i];
}
avg = sum / score.length;### 例子
>計(jì)算全班學(xué)員的平均分
public static void main(String[ ] args) {int[ ] scores = new int[5]; //成績(jī)數(shù)組
int sum = 0; //成績(jī)總和
Scanner input = new Scanner(System.in);
System.out.println("請(qǐng)輸入5位學(xué)員的成績(jī):");
for(int i = 0; i < scores.length; i++){
scores[i] = input.nextInt();
sum = sum + scores[i]; //成績(jī)累加
}
System.out.println("平均分是:" + (double)sum/scores.length);
}### 數(shù)組使用常見錯(cuò)誤
public class ErrorDemo1 {public static void main(String[ ] args){
int[ ] score = new int[ ];
score[0] = 89;
score[1] = 63;
System.out.println(score[0]);
}
}
public class ErrorDemo2 {public static void main(String[ ] args) {
int[ ] scores = new int[2];
scores[0] = 90;
scores[1] = 85;
scores[2] = 65;
System.out.println(scores[2]);
}
}
public static void main(String[ ] args){int[ ] score = new int[5];
score = {60, 80, 90, 70, 85};
int[ ] score2;
score2 = {60, 80, 90, 70, 85};
}#### 一個(gè)練習(xí)
> 有一個(gè)數(shù)列:8,4,2,1,23,344,12
循環(huán)輸出數(shù)列的值
求數(shù)列中所有數(shù)值的和
猜數(shù)游戲:從鍵盤中任意輸入一個(gè)數(shù)據(jù),判斷數(shù)列中是否包含此數(shù)
// 有一個(gè)數(shù)列:8,4,2,1,23,344,12
// 循環(huán)輸出數(shù)列的值
// 求數(shù)列中所有數(shù)值的和// 猜數(shù)游戲:從鍵盤中任意輸入一個(gè)數(shù)據(jù),判斷數(shù)列中是否包含此數(shù)
int[] array = {8,4,2,1,23,344,12};
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入一個(gè)數(shù)");
int num = scanner.nextInt();
int i = 0;
//拿數(shù)組中的每一個(gè)元素和num比較,如果想等,輸出包含,否則,輸出不包含
for(i = 0; i < array.length; i++)
{
if(array[i]==num)
{
System.out.println("包含");
break;
}
}
//說明循環(huán)了一圈都沒有發(fā)現(xiàn)用戶輸入的值
if(i==array.length)
{
System.out.println("不包含");
}### 數(shù)組排序
>循環(huán)錄入5位學(xué)員成績(jī),進(jìn)行升序排列后輸出結(jié)果
使用java.util.Arrays類
java.util包提供了許多工具類
Arrays類提供操作數(shù)組的方法,例排序、查詢
Arrays類的sort()方法: 對(duì)數(shù)組進(jìn)行升序排列……
int[] scores = new int[5]; //成績(jī)數(shù)組
Scanner input = new Scanner(System.in);
System.out.println("請(qǐng)輸入5位學(xué)員的成績(jī):");
for(int i = 0; i < scores.length; i++){
scores[i] = input.nextInt();
}
Arrays.sort(scores);
System.out.print("學(xué)員成績(jī)按升序排列:");
for(int i = 0; i < scores.length; i++){
System.out.print(scores[i] + " ");
}### 查找數(shù)組中的最大值
>從鍵盤輸入本次Java考試五位學(xué)生的成績(jī),求考試成績(jī)最高分
// 從鍵盤輸入本次Java考試五位學(xué)生的成績(jī),求考試成績(jī)最高分//將5個(gè)成績(jī)保存到數(shù)組中,
//然后,遍歷數(shù)組,找出數(shù)組中最大的數(shù)
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入成績(jī)");
int[] scores = new int[5];
//將5個(gè)成績(jī)保存到數(shù)組中,
for(int i = 0; i < scores.length; i++)
{
System.out.println("輸入第" + (i + 1) + "次成績(jī)");
scores[i] = scanner.nextInt();
}
//然后,遍歷數(shù)組,找出數(shù)組中最大的數(shù)
int max = scores[0];讓max等于數(shù)組中第一個(gè)元素
for(int i = 1; i < scores.length; i++)
{
if(max < scores[i])
{
max = scores[i];//誰比他大,他就變成誰
}
}
System.out.println("最大值是" + max);### 數(shù)組插入算法
>有一組學(xué)員的成績(jī){99,85,82,63, 60},將它們按升序排列。要增加一個(gè)學(xué)員的成績(jī),將它插入成績(jī)序列,并保持升序。

分析:
將成績(jī)序列保存在長(zhǎng)度為6的數(shù)組中
通過比較找到插入位置
將該位置后的元素后移一個(gè)位置
將增加的學(xué)員成績(jī)插入到該位置
// 有一組學(xué)員的成績(jī){99,85,82,63, 60},將它們按升序排列。
// 要增加一個(gè)學(xué)員的成績(jī),將它插入成績(jī)序列,并保持升序int[] scores = {99,85,82,63, 60};
Arrays.sort(scores);
for(int i = 0; i < scores.length; i++)
{
System.out.print(scores[i]+" ");
}
// 要增加一個(gè)學(xué)員的成績(jī),將它插入成績(jī)序列,并保持升序
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入下一個(gè)學(xué)生成績(jī)");
int input = scanner.nextInt();
int pos = 0;//用戶輸入的數(shù)在新數(shù)組中正確的插入位置
//遍歷原始數(shù)組,找到要插入的位置
for(int i = 0; i < scores.length; i++)
{
if(input <= scores[i])
{
pos = i;
break;
}
}
//再建一個(gè)新的數(shù)組,包含6個(gè)元素
int[] scores2 = new int[6];
//拷貝舊數(shù)組從0開始
// 到pos位置的數(shù)到對(duì)應(yīng)新數(shù)組同樣下標(biāo)中
for(int i = 0; i < pos; i++)
{
scores2[i] = scores[i];
}
scores2[pos] = input;
//拷貝舊數(shù)組從pos+1開始
// 到舊數(shù)組長(zhǎng)度位置的數(shù)到對(duì)應(yīng)新數(shù)組同樣下標(biāo)中
for(int i = pos+1; i < scores2.length; i++)
{
scores2[i] = scores[i-1];
}
for(int i = 0; i
{
System.out.print(scores2[i]+" ");
}### 字符逆序輸出
將 一組亂序的字符進(jìn)行排序
進(jìn)行升序和逆序輸出

1.創(chuàng)建數(shù)組存儲(chǔ)原字符序列。
2.利用Array類的sort(?)方法對(duì)數(shù)組進(jìn)行排序,并循環(huán)輸出。
3. 從最后一個(gè)元素開始,將數(shù)組中的元素逆序輸出。char[] charArray2 = {'a','c','u','b','e','p','f','z'};
//字符串可以看成是字符數(shù)組
String str = "abcefpuz";
System.out.println(charArray2.length);
System.out.println(charArray2);
Arrays.sort(charArray2);
System.out.println(charArray2);
for(int i = charArray2.length - 1; i >= 0; i--)
{
System.out.print(charArray2[i]);
}在上一個(gè)練習(xí)的基礎(chǔ)上改進(jìn):
向上一個(gè)練習(xí)中得到的升序字符序列中插入一個(gè)新的字符,要求插入之后字符序列仍保持有序

### 字符串?dāng)?shù)組
>定義一個(gè)字符串?dāng)?shù)組,查找某個(gè)字符串在數(shù)組中出現(xiàn)的次數(shù)
String[] array = {"zhangsan","lisi","wangwu","lisi"};String name = "wangwu";
int count = 0;//count計(jì)數(shù),數(shù)字num在數(shù)組中出現(xiàn)的次數(shù)
for(int i = 0; i < array.length; i++)
{
if(array[i].equals(name))
{
count++;
}
}
System.out.println(count);### 作業(yè)
1.歌手打分:
在歌唱比賽中,共有10位評(píng)委進(jìn)行打分,在計(jì)算歌手得分時(shí),去掉一個(gè)最高分,去掉一個(gè)最低分,然后剩余的8位評(píng)委的分?jǐn)?shù)進(jìn)行平均,就是該選手的最終得分。輸入每個(gè)評(píng)委的評(píng)分,求某選手的得分。
2.現(xiàn)在有如下一個(gè)數(shù)組:
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
要求將以上數(shù)組中的0項(xiàng)去掉,將不為0的值存入一個(gè)新的數(shù)組,生成新的數(shù)組為
總結(jié)
以上是生活随笔為你收集整理的java数组的四个要素_Java零基础系列教程04Java数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中使用什么导入模块-pyth
- 下一篇: linux终端密码星星,如何获得您的su