Java基础分为静态数组和动态数组
静态数组
静态数组定义格式:数据类型[] 数组名称 = new 数据类型[]{value1,value2,value3,.......}
double[] scorce = new double[]{89.9, 99.6, 76.4, 78.3, 90.7};
String[] name = {"张三","李四","王五","赵六","贾七"};
int[] age = new int[]{12, 14, 54, 64, 65};
也可写成:数据类型 数组名称[] = new 数据类型[]{value1,value2,value3,.......}
String name[] = {"张三", "李四", "王五", "赵六", "贾七"};
这里推荐使用第一种定义格式
案例:
需求:有一个年龄数组[12,14,54,64,65],现需求出其年龄平均值。
package cn.base.it.array;
public class arrayStatic {
public static void main(String[] args) {
int[] age = new int[]{12, 14, 54, 64, 65};
int avgAge = 0;
int sum = 0;
for (int i = 0; i < age.length; i++) {
sum += age[i];
if (i==age.length-1){
System.out.println("年龄总和"+sum);
avgAge = sum/age.length;
}
}
System.out.println(avgAge);
}
}
运行结果:
动态数组
动态数组定义格式:数据类型[] 数据名称 = new 数据类型[数组长度]
案例:
案例1.
现有一活动,选手得分由五位评委依次输入最后取平均分作为选手得分。
double[] scores = new double[6];
Scanner scanner = new Scanner(System.in);
double sum = 0;
double avg = 0;
for (int i = 0; i < scores.length; i++) {
System.out.println("请第"+(i+1)+"位评委输入分数:");
scores[i] = scanner.nextDouble();
sum += scores[i];
avg = sum / scores.length;
}
System.out.println("选手的平均分是:"+avg);
案例2.
数组求最值问题。
int[] yz = new int[]{15, 9000, 10000, 20000, 9500, -5};
int max = yz[0];
int min = yz[0];
for (int i = 1; i < yz.length; i++) {
if (yz[i] > max) {
max = yz[i];
}
if (yz[i] < min) {
min = yz[i];
}
}
System.out.println("最大值:" + max);
System.out.println("最小值:" + min);
案例3.
数组反转问题。
int[] arr1 = new int[]{10, 20, 30, 40, 50};
/**方法一*/
int[] arr2 = new int[100];
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[arr1.length - 1 - i];
System.out.println(arr2[i]);
/**
* arr2[0]------arr1[5-1-0]------arr1[4]
* arr2[1]------arr1[5-1-1]------arr1[3]
* arr2[2]------arr1[5-1-2]------arr1[2]
* arr2[3]------arr1[5-1-3]------arr1[1]
* arr2[4]------arr1[5-1-4]------arr1[0]
*
*/
}
/**方法二*/
for (int i = 0, j = arr1.length - 1; i < j; i++, j--) {
int temp;
temp = arr1[j];
arr1[j] = arr1[i];
arr1[i] = temp;
}
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
案例4.
随机排名问题。依次输入五个员工的工号,随机排序后输出
int[] employeeIds = new int[5];
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < employeeIds.length; i++) {
System.out.println("请输入第"+(i+1)+"名员工的工号:");
employeeIds[i] = scanner.nextInt();
}
for (int i = 0; i < employeeIds.length; i++) {
Random random = new Random();//Random
int r = random.nextInt(employeeIds.length);
int temp;
temp = employeeIds[i];
employeeIds[i] = employeeIds[r];
employeeIds[r] = temp;
}
for (int i = 0; i < employeeIds.length; i++) {
System.out.print(employeeIds[i]+" ");
}