数组的详细介绍及练习题:
一.数组的定义: 数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。
二.数组的三个基本特点:
- 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
- 其元素必须是相同类型,不允许出现混合类型。
- 数组类型可以是任何数据类型,包括基本类型和引用类型。
三.数组的声明:
①数组类型 [] 数组名={元素1,元素2…}
②数组类型 [] 数组名=new 数组类型 [元素个数]
四.数组的初始化方式总共有三种:静态初始化、动态初始化、默认初始化。
五.数组的遍历:数组元素下标的合法区间:[0, length-1]。我们可以通过下标来遍历数组中的元素,遍历时可以读取元素的值或者修改元素的值。
六.方法: JDK提供的java.util.Arrays类,包含了常用的数组操作,方便我们日常开发。Arrays类包含了:排序、查找、填充、打印内容等常见的操作。
eg:Arrays.sort( arrays );//排序 Arrays.toString( arrays );//打印七
七.练习:
1.实现一个功能,:
能够录入指定数量的学生成绩,
计算最终的平均值和及格率
中途录入数据错误:如:负数,则停止录入并提示用户数据错误,之后重新开始录入
package ArraysHome;
/**
* 1.实现一个功能,:
* 能够录入指定数量的学生成绩,
* 计算最终的平均值和及格率
* 中途录入数据错误:如:负数,则停止录入并提示用户数据错误,之后重新开始录入
*/
import java.util.Scanner;
public class ScoreArray {
public static void main(String[] args) {
int []scoresArray=new int[20];//定义一个数组接受输入的成绩
int agv;//平均数
double People=0;//人数
while (true){
int sum=0;//总分数
boolean flage=true;
System.out.println("请输入该班同学的成绩:");
for(int i=0;i<scoresArray.length;i++){//遍历数组赋值
scoresArray[i]= new Scanner( System.in ).nextInt();//接受录入的成绩。
if(scoresArray[i]>=60){//判断是否合格
People++;//合格自增
}
//录入总成绩
sum+=scoresArray[i];
if(scoresArray[i]<0){//判断格式是否正确
System.out.println("输入的格式不对");
flage=false;//格式错误便重新输入
break;
}
}
if(flage){
agv=sum/scoresArray.length;
System.out.println("平均值:"+agv);
System.out.println("及格率为:"+People/(double) scoresArray.length*100+"%");
break;
}else {
System.out.println("录入错误,请重新输入该班同学的成绩:");
}
}
}}
2.实现一个功能:
能够录入指定数量的数据,
录入完成侯,随机输入一个检测数字,检测其是否在之前定义的数组中
package ArraysHome;
import java.util.Scanner;
/**
* 2.实现一个功能:
* 能够录入指定数量的数据,
* 录入完成侯,随机输入一个检测数字,检测其是否在之前定义的数组中
*/
public class DetectionText {
public static void main(String[] args) {
System.out.println("请指定录入数据的个数:");
int arrayNumbers = new Scanner( System.in ).nextInt();//指定数量的数据
int []arrays=new int[arrayNumbers];//数组接受
System.out.println("请按录入数据的个数,定义一个数组:");//之前定义的数组
for (int i=0;i<arrays.length;i++){
int arraysDeserve = new Scanner( System.in ).nextInt();
arrays[i]=arraysDeserve;
}
System.out.println("指定要查询的数字:");
int Number = new Scanner( System.in ).nextInt();//指定要查询的数字
boolean flage=true;//定义一个观察者
while (flage){
for(int NumberTow:arrays){//遍历数组
if(NumberTow==Number){//判断要查询的数是否在数组中
System.out.println("要查询的数在数组中");
flage=false;//如果在这个数组中,则结束循环,不执行下边if中的语句
}
}
if(flage){//如果没有执行上边代码,则表明不在数组中
System.out.println("要查询的数不在数组中");
break;
}
}
}
}
3.实现一个功能:
能够录入指定数量的数据
录入完成侯,将数组做排序,升序或者降序都可以
随机输入一个数字,将其按照顺序插入到数组中,并使最终的数组保持降序或者升序
package ArraysHome;
import java.util.Arrays;
import java.util.Scanner;
/**
* 3.实现一个功能:
* 能够录入指定数量的数据
* 录入完成侯,将数组做排序,升序或者降序都可以
* 随机输入一个数字,将其按照顺序插入到数组中,并使最终的数组保持降序或者升序
*/
public class ScoreText {
public static void main(String[] args) {
int temp;
System.out.println("请指定录入数据的个数:");
int arrayNumbers = new Scanner( System.in ).nextInt();//指定数量的数据
int []arrays=new int[arrayNumbers];//数组接收
System.out.println("请按录入数据的个数,定义一个数组:");//之前定义的数组
for (int i=0;i<arrays.length;i++){//遍历赋值
int arraysDeserve = new Scanner( System.in ).nextInt();
arrays[i]=arraysDeserve;
}
System.out.println("请输入你要添加的数字:");
int newNumber = new Scanner( System.in ).nextInt();
int[] tempArray=new int[arrays.length+1];//新建一个数组,但空间比原数组大一
for(int i=0;i<arrays.length;i++) {//遍历把原数组元素赋值给新数组
tempArray[i]=arrays[i];
}
tempArray[arrays.length]=newNumber;//加入新的数字
arrays=tempArray;//新数组的内存指向原数组
for(int j=0;j<arrays.length;j++){//冒泡排序
for(int i=0;i<arrays.length-1-j;i++){
if(arrays[i]<arrays[i+1]){
temp=arrays[i];
arrays[i]=arrays[i+1];
arrays[i+1]=temp;
}
}
}
System.out.println(Arrays.toString( arrays ));
}
}
4.实现一个功能:
能够录入指定数量的数据
取出数组中的最大值和最小值
计算数组元素的和
package ArraysHome;
import java.util.Arrays;
import java.util.Scanner;
/**
* 4.实现一个功能:
* 能够录入指定数量的数据
* 取出数组中的最大值和最小值
* 计算数组元素的和
*/
public class ArraySumText {
public static void main(String[] args) {
int sum=0;
System.out.println("请指定录入数据的个数:");
int arrayNumbers = new Scanner( System.in ).nextInt();//指定数量的数据
int []arrays=new int[arrayNumbers];//数组接受
System.out.println("请按录入数据的个数,定义一个数组:");//之前定义的数组
for (int i=0;i<arrays.length;i++){//循环赋值
int arraysDeserve = new Scanner( System.in ).nextInt();
arrays[i]=arraysDeserve;
sum+=arrays[i];//数组和
}
System.out.println("数组元素的和:"+sum);
Arrays.sort( arrays );//排序
System.out.println("最大值:"+arrays[arrayNumbers-1]);//最大值
System.out.println("最小值"+arrays[0]);//最小值
}
}