java初级-一维数组
1数组的定义
定义:数组是一个变量,存储相同数据类型的一组数据,声明一个数组就是在内存空间声明一片连续的存储空间
2数组的基本使用
2.1最基本的数组使用:
1)声明数组 数据类型[] 数组名
2)分配空间:告诉数组能够存储多少个元素
数组名=new 数据类型[数组长度];
3)赋值操作:数组名[下表]=数据;
// 定义一个数组
int[] arr;
// 给数组分配空间
arr= new int[6];
// 给数组赋值
arr[0]=1;
2.2升级版数组使用
声明数组、分配空间合并一步写
格式: 数据类型[] 数组名=new 数据类型[数组长度];
//声明数组、分配空间合并一步写
int[] arr=new int[8];
// 给数组赋值
arr[0]=15;
注意:如果没有分配空间,数组中的数据类型int 默认0;float默认0.0;布尔类型默认false;
2.3最终版数组使用
声明数组、分配空间、赋值合并一步写:
格式:数据类型[] 数组名=new 数据类型[]{数据1,数据n}
操作数据: 数据名[下标]
//定义数组、分配空间、赋值一步写
int[] arr=new int[]{1,435,243,};
// 操作数据
int a=arr[0];
System.out.println(a);
注意:以上语法中{}前面的[]里面不能写数组长度
2.4最简方法
格式:
数据类型[] 数组名={数据1,数据2,,,,,数据n};
//最简单的方法
int[] arr={1,4,7,4,3,};
// 操作数据
int a=arr[4];
System.out.println(a);
3数组常用操作
3.1获取数组元素个数(数组长度)
格式:数组名.length
3.2遍历数组
按照数组元素下标输出数组中的所有元素
int[] arr1=new int[]{13,35,23};
for(int i=0;i<arr1.length;i++){
System.out.println(arr1[i]);
}
3.3增强for循环
格式 :for(数据类型 变量名:数组名或者集合名){
}
int[] arr={1,34,56,34,576};
for(int a:arr){
System.out.println(a);
}
执行规律:按照数据或集合中的元素的顺序,依次将元素取出放到变量中,操作变量就可以实现操作
注意:变量名可以随便取,最后输出变量名;增强for循环一般就是用来遍历
}
注意:数组长度一旦固定好之后,就不能修改,如果你需要向数组中添加元素,你只能再声明一个数组;
4数组应用
4.1应用1
有一个数列:8,4,2,1,23,344,12
1)循环输出数列的值
// 定义一个数组
int[] arr={8,4,2,1,23,344,12};
// 使用增强的for循环对数组进行遍历
for(int a:arr){
System.out.print(a+" ");
}
2)求数列中所有数值的和
int sum=0;
int[] arr={8,4,2,1,23,344,12};
for(int i=0;i<arr.length;i++){
sum+=arr[i];
}
// for(int a:arr){
// sum+=a;
// }//这种增强的for循环也可以使用
System.out.println("所有的数据之和是:"+sum);
3)猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
import java.util.Scanner;//导包
int[] arr={8,4,2,1,23,344,12};
//键盘录入一个数据
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个随机数:");
int random=sc.nextInt();
System.out.println("你输入的数据是:"+random);
//定义一个变量对判断次数进行计数,
int count=0;
for(int a:arr){
if(random==a){
System.out.println("这个数列中包含此数");
}else{
count++;
//当判断次数和数组长度相等时,说明已经是最后一个数据了,且数组中不包含这个数据
if(count==arr.length){
System.out.println("数列中不包含这个数");
}
}
}
4.2应用2
从键盘输入6个学生的成绩,输入完之后输出最高分、最低分、平均分、所有人的分数总分
//键盘录入6个数据
import java.util.Scanner;
Scanner sc=new Scanner(System.in);
double[] arr=new double[6];
//使用for循环将数据写入数组中
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"学生的成绩");
arr[i]=sc.nextDouble();
}
//使用for循环遍历输出数组中的数据
for(int i=0;i<arr.length;i++){
System.out.println("第"+(i+1)+"学生的成绩是"+arr[i]);
}//以上是键盘录入数据和输出数据
// 假设数组中的第一个数据是最大值
double max=arr[0];
for(int i=0;i<arr.length;i++){
//通过for循环将最大值和数组中的元素一一比较,如果比最大值大,则将值赋给最大值
if(max<arr[i]){
max=arr[i];
}
}
System.out.println("最大值是:"+max);//以上输出数组中的最大值
double min=arr[0];
for(double a:arr){
//通过for循环将最小值和数组中的元素一一比较,如果比最小值小,则将值赋给min
if(min>a){
min=a;
}
}
System.out.println("最小值是"+min);//以上输出数组中的最小值,在算最大值和最小值时,使用了不同的for循环,可以自行比较
int sum=0;
for(double a:arr){
sum+=a;
}
System.out.println("所有和是:"+sum);
4.3应用3
有一组学员的成绩{99,85,82,63, 60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序
int[] nums = {99,85,82,63,60};
//1)定义一个长度比原来数组大1的数组
int[] newNums = new int[nums.length+1];
//2)将原来数组中的元素存储到新的数组中
for(int i =0;i<nums.length;i++){
newNums[i]=nums[i];
}
//输出新数组中的所有元素
for (int i : newNums) {
System.out.print(i+" ");
}
System.out.println();
//3)从键盘录入,获取你要插入的元素
System.out.println("请输入你要插入的元素:");
int insert = sc.nextInt();
//4)获取你插入元素要插入的位置(下标),将你要插入的元素依次与数组中的元素进行比较,如果你插入的元素比数组中得元素大, 当前元素的下标就是你要插入元素的位置,结束循环比较过程
//定义一个int类型的变量index存储元素要插入的位置
int index = newNums.length-1;
for(int i =0;i<newNums.length;i++){
if(insert>newNums[i]){
//获取插入位置为i
index=i;
//得到插入位置之后,后面的比较操作不再执行,退出循环
break;
}
}
System.out.println("你要插入元素的位置为:"+index);
//5)从插入位置开始的元素及之后的元素都要依次往后移动一位(反向操作,从最后一个元素开始)
for(int i =newNums.length-1;i>index;i--){
//移动元素
newNums[i] = newNums[i-1];
}
//输出新数组中的所有元素
System.out.println("元素移动位置之后.....");
for (int i : newNums) {
System.out.print(i+" ");
}
System.out.println();
//6)将你要插入的元素存储到它要插入位置
newNums[index]=insert;
//输出新数组中的所有元素
System.out.println("元素插入之后.....");
for (int i : newNums) {
System.out.print(i+" ");
}
System.out.println();