例题1:求最大值
从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分
思想是:1.从键盘上输入(代表你需要创建一个Scanner的类然后获取成绩),需要创建一个数组存储每一次的学生的成绩
2.获取5个学生的成绩(代表你要输入五次学生的成绩这是一个循环的动作可以使用for循环
3.然后比较成绩:可以先假设一个成绩[0]为最高值然后去进行比较
4.如果比较的值比假设值要大则替换假设值,然后继续比较,如果比较值小于假设值那么不进行替换继续比较(可以用if判断,for进行每次比较的循环)
代码如下:
//从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分
double[] score=new double[5];
double max =score[0];
Scanner sc =new Scanner(System.in);
for(int i =0;i<5;i++){
System.out.print("请输入第"+(i+1)+"位的成绩");
score[i] = sc.nextDouble();
}
for (int i = 0; i < score.length; i++) {
if(max<score[i]){
max=score[i];
}
}
System.out.println("成绩的最高分"+max);
例题2:插入数值
有一组学员的成绩{99,85,82,63, 60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序
思想:
1.要加入一个学员的成绩,就要扩大数组,所以要建立一个数组的长度比原来的大1的长度
2.然后把原来数组的数据一一对应存入在新的数据中
3.要增加一个学员的成绩就要从键盘上录入一个信息(就是创建一个scanner的类)
4.要保持降序,就要先找到新数据比原来数据的大小然后得到他的下标
5.下标后面的数据要依次向后后移一位(注意是从后面向前移动)
6.这样得到的那个下标,给它赋值
7.最后遍历一边数组输出查看
代码:
//1)先定义一个新的数组用来插入新的数据
int[] num={99,85,82,63,60};
int[] score= new int[num.length+1];
for(int i =0;i<num.length;i++){
score[i]=num[i];
}
//2)创建Scanner的类获取新的成绩
Scanner sc =new Scanner(System.in);
System.out.println("请输入要增加的成绩");
int num2=sc.nextInt();
//3)循环比较得到插入的下标
int index=score.length-1;
for(int i=0;i<score.length;i++){
if(num2>score[i]){
index=i;
break;
}
}
//4)插入之后的数据向后移一位(注意是从后向前移动)
for(int i =score.length-1;i>index;i--){
score[i]=score[i-1];
}
//5)移动后index那个数组就空出来了然后给它赋值
score[index]=num2;
//6)遍历一遍数组 看看
for (int i = 0; i < score.length; i++) {
System.out.print(score[i]+" ");
}
例题:删除数组指定元素
int[] num={11,25,96,65,49,78,95};
思路:
删除指定就要在键盘上获取他的下标所以要创建Scanner类
输入下标然后找到它
找到下标之后,下标后面的数据依次后移一位,最后一个赋予默认值
代码:
//1.要先创建一个Scanner的类
Scanner sc =new Scanner(System.in);
//2.输入下标并找到他
System.out.println("请输入下标(0-6)");
int index = sc.nextInt();
//找到下标之后 依次向后覆盖 最后给最后一个元素赋予初始值
for (int i = index; i < num.length; i++) {
num[index]=num[index+1];
}
//最后给最后一个值赋予初始值
//给他进行一个判断使得
if(index>=0&&index<num.length){
num[num.length-1]=0;
}
//输出数组
for (int b : num) {
System.out.print(b+" ");
}
冒泡排序
升序
思想: 每次比较相邻的两个数
比较大小,第一个数要是比第二个数大则他俩交换
每轮结束后最大的值交换到最后
例题:把下列数组int[] num={11,56,94,78,33};用冒泡排序升序
int[] num={11,56,94,78,33};
System.out.println("比较前数组:");
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+" ");
}
System.out.println();
//外循环控制比较的行数
for(int i=0;i<num.length-1;i++){
//内循环控制比较的次数
for(int j =0;j<num.length-1-i;j++){
if(num[j]>num[j+1]){
int temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
System.out.println("比较后数组:");
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+" ");
}
降序
思想
每次比较相邻的两个数
比较大小,第一个数要是比第二个数小则他俩交换
每轮结束后最小的值交换到最后
例题:// 使用冒泡排序对输入5同学成绩进行降序
//创建Scanner
Scanner sc = new Scanner(System.in);
//创建一个数组来存放输入的成绩
int[] score=new int[5];
for(int i =0;i<5;i++){
System.out.println("请输入第"+(i+1)+"位同学的成绩");
score[i] =sc.nextInt();
}
//利用循环外循环控制行数(控制进行几轮比较)
for(int i =0;i<score.length-1;i++){
//内循环控制列数(控制他的每一轮比较的次数)
for (int j = 0; j < score.length-1-i; j++) {
//进行判定利用if比较输入的成绩的大小进行降序
if(score[j]<score[j+1]){
int temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
}
}
//在遍历一下数组输出
for (int i = 0; i < score.length; i++) {
System.out.print(score[i]+" ");
}
冒泡排序速记口诀(升序)
N 个数字来排队
两两相比小靠前
外层循环 N-1
内层循环 N-1-i
Arrays类
sort()方法: 对数组进行升序排列
//arrays.sort(数组名):对数组进行升序排列
int[] num ={11,22,02,3,55,65};
Arrays.sort(num);
for (int i : num) {
System.out.print(i+" ");
}
System.out.println();
//boolean equals(array1,array2) 是用与 比较array1和array2两个数组是否相等
int[] num1={11,12,15,14};
int[] num2={11,15,12,13};
boolean risde=Arrays.equals(num1,num2);
System.out.println(risde);
//String toString(array) 将一个数组array转换成一个字符串
String str= Arrays.toString(num2);
System.out.println(str);
//void fill(array,val) 把数组array所有元素都赋值为val
int[] num3={55,45,24,45};
System.out.println(Arrays.toString(num3));
Arrays.fill(num3,66);
System.out.println(Arrays.toString(num3));