之前我們都是針對一個數據類型的數據的運算
如果在問題中,出現大量的相同類型的數據,那么,就要考慮大量數據的運算(也是采用算術,關系,邏輯運算符)
也要考慮大量數據的保存 (采用數組)
一:數組 ***
1:什么是數組
由一組相同數據類型的數據的組合
2:數組的定義的語法是什么呢
聲明數組的語法://聲明數組的意思 就是告訴計算機內存,要保留一段某數據類型的空間大小,這時候沒有數據存入
數據類型 標識符[ ]; //標識符 就是數組名,也要符合變量的命名規范
int int_array[];
String []str; //[] 中括號可以放在標識符的前面,也可以在后面
利用new 來為數組型變量分配內存空間
array_int=new int[10]; //就是說真正在內存中分配10個大小的int類型的空間,數據全部默認為0
str=new String[10];//在內存中分配10個大小的字符串類型的空間,數據全部為null
聲明數組與分配空間完全可以寫成一個,叫數組定義
int a[]=new int[10]; // 10 大小必須是整型,并且必須寫
//在內存中分配了10個int類型的空間,每個空間都默認為0 第一個空間的地址為a
例子:
//這個例子要大家學會怎么定義數組,怎么輸出數組的數據
int a[]=newint[10];
//String a[]=new String[10];
//輸出數組中的數據的值 int類型默認的數據為0
for(int i=0;i<a.length;i++){//i<10 可以寫成i<a.length
System.out.print(a[i]);//怎么得到數據 a[i] i不能超過數組的長度從0開始
}
System.out.println();
int b1=10;
int a1[]=newint[b1];
//輸出數組中的數據的值
for(int i=0;i<10;i++){
System.out.print(a[i]);
}
3:數組的初始化(也就是說怎么給數組賦值)
a:在定義的時候可以賦值
//數組在定義的時候,可以賦值--叫數組的初始化
//注意:數組的大小(長度)不要寫,由賦值的數據的多少決定長度
int a[]=newint[]{1,2,3,4,5,6};
for(int i=0;i<a.length;i++){
System.out.print(a[i]);
}
b:通過循環可以給數組賦值
int a[]=newint[6];
//通過循環賦值給數組a
for(int i=0;i<a.length;i++){
a[i]=i;
}
for(int i=0;i<a.length;i++){
System.out.print(a[i]);
}
一維數組的例子:從鍵盤輸入5個整數,求這5個數的最大值
//從鍵盤輸入5個整數,求這5個數的最大值
Scanner s=new Scanner(System.in);
System.out.println("請從鍵盤輸入5個整數:");
int a[]=newint[5];
//給數組a賦值
for(int i=0;i<a.length;i++){
a[i]=s.nextInt();//從鍵盤輸入的時候,要回車
}
System.out.println();
//輸出數組a的數據
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
//求最大值
int max=a[0];//max的值為a[0]
for (int i = 1; i < a.length; i++) {
if(a[i]>max){
max=a[i];
}
}
System.out.println("最大值="+max);
例子2:從鍵盤輸入5個整數,請按照升序排列輸出
//從鍵盤輸入5個整數,請按照升序排列輸出
Scanner s=new Scanner(System.in);
System.out.println("請從鍵盤輸入5個整數:");
int a[]=newint[5];
//給數組a賦值
for(int i=0;i<a.length;i++){
a[i]=s.nextInt();//從鍵盤輸入的時候,要回車
}
System.out.println();
//冒泡排序的規律:記住并且理解的
//第一個循環的 i<數組的長度-1
//第二個循環的 j<數組的長度-i-1
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-i-1; j++) {
if(a[j]>a[j+1]){
//交換數據
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
4:二維數組的定義
如果有行與列的數據,那么采用2維數組,
有2個[]符號
二維數組的語法(標準定義)
數據類型標識符[][]=new 數據類型[行的大小][列的大小];
int a[][]=new int[3][3];//也就是定義3行3列的數據,從0行0列開始
int a[][]=newint[][]{{1,2,3},{4,5,6}};////可以初始化賦值
//也可以循環賦值
//輸出
for (int i = 0; i < a.length; i++) {//a.length 就是求出的行數
for (int j = 0; j < 3; j++) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}
例子:定義一個3行3列的數據,求對角線數據的和
int a[][]=newint[][]{{1,2,3},{4,5,6},{7,8,9}};
int sum=0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < 3; j++) {
if(i==j){
sum=sum+a[i][j];
}
}
}
System.out.println("sum="+sum);
sum=0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j<3; j++) {
if((i+j)==2){
sum=sum+a[i][j];
}
}
}
System.out.println("sum="+sum);
System.out.println(a[3][3]);
sum=15
sum=15
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at test.Test.main(Test.java:32)
錯誤的原因是執行System.out.println(a[3][3]);這行時候出錯
ArrayIndexOutOfBoundsException 數組索引超過范圍