Java基础—一维数组
前言:为什么需要数组
数组是一个变量,用来存储具有相同数据类型的数据。
【注:数组下标从0开始】,不注意的话会出现下图的异常:数组下标越界异常
一维数组的声明和定义
- 声明数组:int[] a;
- 分配孔健:a = new int[5];
- 赋值: a[0] = 8;
- 处理数据:a[0]=a[0]*10;
常见的定义一维数组方式:
int[] a =new int[5];
a[0] =8,a[1]=34…
int[] a = {12,23,23};
【例子】
一、计算5名学生的平均分
1.没用for循环
int [ ] scores = {60, 80, 90, 70, 85};
double avg = (scores[0] + scores[1] + scores[2] + scores[3] + scores[4])/5;
System.out.println(avg);
2.使用for循环
int [ ] scores = {60, 80, 90, 70, 85};
int sum = 0;
double avg;
for(int i = 0; i < scores.length; i++){
sum = sum + scores[i];
}
System.out.println(avg = sum / scores.length);
数据在内存中的实际地址
二、计算一个数组中所有元素之和,并且判断输入的数是否在数组中
int []arr = {8,4,2,1,23,344,12};
int sum = 0;
for (int x:arr) {
System.out.print(x+"\t");
sum+=x;
}
System.out.println("\n总和为"+sum); //输处数组中所有元素的总和
System.out.println("请输入一个数"); //输入一个数看是否为数组中元素
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
boolean tag =false;
for (int i = 0; i < arr.length; i++) {
if (input == arr[i])
tag = true;
}
if (tag) {
System.out.println(tag);
} else {
System.out.println(tag);
}
【注:这边的输出有点基础,后面会讲到Arrays.toString(a)方法来实现快速打印数组所有元素】
结果显示:
三、求一个数组中最大元素的值
int a[] = new int[10]; //求最大值
for (int i = 0; i < a.length; i++) {
a[i] = (int)(Math.random()*100); //这边就用随机数代替输入
}
int max = a[0]; //默认第一个元素为最大值,同理求最小值也是一样
for (int i : a) {
System.out.print(i+"\t");
if(max<=i)
max = i;
}
System.out.println("\n"+max);
结果显示:
四、在数组中插入一个数
int[] a = {99,85,33,22,-43}; //数组插入元素,采用 从后往前比较
int[] b = Arrays.copyOf(a,6);
System.out.println(Arrays.toString(a));
int num = 100; //要插入的数,你也可以改成自己输入
int x = 1;
for (int i = b.length-2; i >=0 ; i--) {
if(b[i]<num){
b[i+1] = b[i]; //比num小的元素,往后移位
}else {
b[i+1] = num; //比num大的,将num插入到该元素后面
x = 2;
break;
}
}
if(x==1){ //如果没有没有比num大的,将num插在数组第一位
b[0] = num;
}
System.out.println(Arrays.toString(b));
结果显示: