------- android培訓、java培訓、期待與您交流!
----------
數組是 一個存放同一種數據類型的集合,它是一個容器
數組對其中的元素默認從0開始編號,方便對元素的操作
一維數組:
格式:
1.數據類型[] 變量名 = new 數據類型[數組長度];
int[] arr = new int[5];
2.數據類型[] 變量名 = new 數據類型[]{元素1,元素2,元素3...};
int[] arr = new int[]{3,10,4,5,23};
3.數據類型[] 變量名 = {元素1,元素2,元素3...};
int[] arr
= {39,25,10,49};
注意:
在操作數據的時候注意數組的角標,以防越界和空指針的問題
//訪問到了數組中的不存在的腳標時,發生角標越界
int[] arr = new int[2];
System.out.println(arr[3]);
//arr引用沒有指向實體,卻在操作實體中的元素時,發生空指針異常
int[] arr = null;
System.out.println(arr[0]);
練習:
/*
獲取最值(最大值,最小值)
在一個數組中找到一個值所對應的索引
*/
class Demo
{
public static void main(String[] args)
{
//1.獲取最值(最大值,最小值)
int [] arr1 = {321,4,432,5,6546,54,654,2,432,21};
System.out.println("max = " + getMax(arr1));
System.out.println("min = " + getMin(arr1));
System.out.println("index = " + getIndex(arr1,432));
}
//求數組的最大值
public static int getMax(int[] arr)
{
int max = arr[0];
for (int i = 0;i<arr.length ;i++ )
{
max = max > arr[i]? max : arr[i];
}
return max;
}
//求數組的最小值
public static int getMin(int[] arr)
{
int min = arr[0];
for (int i = 0;i<arr.length ;i++ )
{
min = min < arr[i]? min : arr[i];
}
return min;
}
//找一個數的索引
public static int getIndex(int[] arr,int num)
{
int index=0;
for (int i=0;i<arr.length ;i++ )
{
if (arr[i]==num)
{
index = i;
}
}
return index;
}
}
二維數組:
格式:
1.數據類型[][] 變量名 = new 數據類型[數組長度][每個數組中的元素個數];
int[][] arr = new int[3][2];//有3個一維數組,一維數組中有兩個元素
2.數據類型[][] 變量名 = new 數據類型[數組長度][];//可以先不寫每個數組中的元素個數,然後在對每個一位數組中的元素分別進行初始化
int[][] arr = new int[3][];
int[0] = new int[3];//第一個一維數組中有3個元素
int[1] = new int[2];//第二個一維數組中有2個元素
int[2] = new int[4];//第三個一維數組中有4個元素
3.數據類型[][] 變量名 = {{數組1},{數組2},{數組3}...};
int[][] arr = {{3,4,1},{5,2},{10,43,9,25}};//二維數組中有三個一位數組,每個一維數組均已初始化
注意:
特殊情況的寫法: int[] x,y[]; x是一維數組,y是二維數組。
練習:
class Demo
{
public static void main(String[] args)
{
int[][] arr = {{89,86,90,88,99},
{77,95,63,77,89},
{88,82,78,45,88},
{90,90,65,98,94}};
//第一次考試,所以同學的平均分
int sum = 0;
//遍歷第一行求和求平均
for (int i = 0;i<arr[0].length ;i++ )
{
sum += arr[0][i];
}
System.out.println("第一次考試的平均分:"+ sum / arr[0].length);
//求劉德華同學四次考試的平均分
sum = 0; //sum歸零
//遍歷第一列,求和求平均
for (int i = 0;i<arr.length ;i++ )
{
sum += arr[i][0];
}
System.out.println("劉德華第一次考試的平均分:"+ sum / arr.length);
//求所有同學所有考試的最高分\最低分
//假設最高分\最低分是數組中的第一個元素
int max = arr[0][0];
int min = arr[0][0];
//便利所有元素,求最值
for (int i = 0;i<arr.length ;i++ )
{
for (int j = 0;j<arr[i].length ;j++ )
{
max = max > arr[i][j] ? max : arr[i][j];
min = min < arr[i][j] ? min : arr[i][j];
}
}
System.out.println("最高分是:" + max);
System.out.println("最低分是:" + min);
}
}
綜合練習:
/*
某公司採用公用電話傳遞數據信息,數據是小於8位的整數,爲了確保安全,在傳遞過程中需要加密,加密規則如下:
首先將數據倒序;
然後將每位數字都加上5,再用和除以10的餘數代替該數字;
然後將第一位數字和最後一位數字交換。
請任意給定一個小於8位的整數,然後把加密後的結果在控制檯打印出來。
87362
思路:
1.將這個數的每一位取出來。
87362 % 10 = 2;
87362 / 10 =8736;
8736 % 10 = 6;
8736 /10 = 873;
...
2.建立數組,方便對每個數的操作
3.將每個數加到數組中
4.按要求進行題目的操作
5.從數組中打印這個數即可
*/
class Demo
{
public static void main(String[] args)
{
printNum(87362);
}
public static void printNum(int a)
{
// int a = 87362;
int b = a; //將a賦值給b,如果用a來判斷,a的值會被改變
int count =0; //記錄a是幾位數,從而確定數組的長度
for (int i =0; ;i++ )
{
if (b!=0)
{
b=b/10;
continue;
}
count = i;
break;
}
//System.out.println(count);
int[] arr = new int[count];
for (int i = 0;i<arr.length ;i++ )
{
int num = a%10;
a = a/10;
arr[i] = num;
// System.out.println(a);
}
// printArray(arr);
for (int i=0;i<arr.length ;i++ )
{
arr[i] = (arr[i]+5)%10;
}
// printArray(arr);
arr[0] = arr[0]^arr[4];
arr[4] = arr[0]^arr[4];
arr[0] = arr[0]^arr[4];
printArray(arr);
}
public static void printArray(int[] arr)
{
for (int i=0;i<arr.length ;i++ )
{
System.out.print(arr[i]);
}
System.out.println();
}
}