1、从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分
思路:
1)声明数组来装这五位同学的成绩;
2)声明Scanner类来获取这五名同学的成绩;
3)假设数组中的第一个元素(下标为0的元素)为最大值;
4)依次取出后面的元素与假设的最大值进行比较,如果后面的元素比假设的最大值大,取代它成为新的最大值,如果比假设的最大值小,不进行替换,继续比较;
5)一直比较到最后一个元素。
代码如下
import java.util.Scanner;
public class ArraysDemo02 {
public static void main(String[] args) {
//1)声明一个数组用来保存五名同学的成绩
double[] score=new double[5];
//2)声明一个Scanner类用来输入数据
Scanner sc=new Scanner(System.in);
for (int i = 0; i < score.length; i++) {
System.out.println("请输入第"+(i+1)+"位同学的成绩");
score[i]=sc.nextDouble();
}
//遍历一遍查看是否录入
for (double j : score) {
System.out.print(j+" ");
}
//开始判断大小并循环
double max=0;
for (int i = 0; i < score.length; i++) {
if (score[i]>max){
max=score[i];
}
}
System.out.println("成绩最高分为"+max);
}
}
2、有一组学员的成绩{99,85,82,63, 60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序
思路:
1)新建一个比原来数组长度大1的数组
2)将原来数组里的元素按照顺序存储到新的数组中
3)使用Scanner获取你要增加的学员成绩
4)通过循环比较,获取插入元素要插入的位置(下标)
5)从插入位置开始及之后的元素依次
代码如下
import java.util.Scanner;
public class ArrayDemo03 {
public static void main(String[] args) {
int[] scores = { 99, 85, 82, 63, 60 };
// 1)新建一个比原来数组长度大1的数组
int[] newScores = new int[scores.length + 1];
// 2)将原来数组里的元素按照顺序存储到新的数组中
// newScores[0]=scores[0];
// newScores[1]=scores[1];
// newScores[2]=scores[2];
// newScores[3]=scores[3];
for(int i =0;i<scores.length;i++){
newScores[i]=scores[i];
}
//3)使用Scanner获取你要增加的学员成绩
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要增加的学员成绩:");
int insert = sc.nextInt();
//4)通过循环比较,获取插入元素要插入的位置(下标)
int index = newScores.length-1;
for(int i =0;i<newScores.length;i++){
if(insert>newScores[i]){
index = i;
//一旦获取插入元素比某一个元素大,就不再往后进行比较了,结束整个比较过程
break;
}
}
//5)从插入位置开始及之后的元素依次往后移动一位(注意:移动的时候,从后向前移动)
for(int i =newScores.length-1;i>index;i--){
newScores[i]=newScores[i-1];
}
//6)移动元素之后,插入位置就空出来了,将插入元素存储到插入位置
newScores[index]=insert;
//插入元素之后,遍历数组
for (int i = 0; i < newScores.length; i++) {
System.out.print(newScores[i]+" ");
}
}
}
3、数组存储5笔购物金额,在控制台输出并计算总金额
思路:
1)声明一个长度为5的数组
2)使用Scanner获取购物金额并将金额存储到数组中
3)声明一个变量sum用来累加购物金额
4)在输入购物金额的同时,可以将购物金额累加到sum变量中
5)输出购物金额
代码如下
import java.util.Scanner;
public class ArrayDemo05 {
public static void main(String[] args) {
//数组存储5笔购物金额,在控制台输出并计算总金额
//第一步:声明一个长度为5的数组
double[] prices = new double[5];
//第二步:使用Scanner获取购物金额并将金额存储到数组中
Scanner sc = new Scanner(System.in);
System.out.println("请输入会员本月的消费记录:");
//声明一个变量sum用来累加购物金额
double sum = 0;
for (int i = 0; i < prices.length; i++) {
System.out.println("请输入第"+(i+1)+"笔购物金额:");
prices[i]=sc.nextDouble();
//在输入购物金额的同时,可以将购物金额累加到sum变量中
sum+=prices[i];
}
//输出购物金额
System.out.println("序号\t\t金额(元)");
for (int i = 0; i < prices.length; i++) {
System.out.println((i+1)+"\t\t"+prices[i]);
}
System.out.println("总金额\t\t"+sum);
}
}
4、冒泡排序--升序
注意:
外层循环控制行数(外控循环控制比较的轮数)
内层循环控制列数(内层循环控制每一轮的比较次数)
public class ArrayDemo01 {
public static void main(String[] args) {
// 冒泡排序
int[] nums = {11,56,94,78,33};
//排序前输出数组
System.out.println("排序前的数组:");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+" ");
}
System.out.println();
//外层循环控制行数(外控循环控制比较的轮数)
for(int i =0;i<nums.length-1;i++){
//内层循环控制列数(内层循环控制每一轮的比较次数)
for(int j =0;j<nums.length-1-i;j++){
//比较:如果前面的元素比后面的元素大,交换位置
if(nums[j]>nums[j+1]){
int temp = nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
System.out.println("排序后的数组:");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+" ");
}
}
}
5、冒泡排序--降序
import java.util.Scanner;
public class ArrayDemo02 {
public static void main(String[] args) {
//创建Scanner类对象
Scanner sc = new Scanner(System.in);
//准备好长度为5的数组用来存储5名学员的成绩
double[] scores = new double[5];
//从键盘输入5位学员的成绩并存储在数组中
for (int i = 0; i < scores.length; i++) {
System.out.println("请输入第"+(i+1)+"位学员的成绩:");
scores[i]=sc.nextDouble();
}
//排序前输出5位学员的成绩
System.out.println("排序前:");
for (double d : scores) {
System.out.print(d+" ");
}
System.out.println();
//降序排序
for (int i = 0; i < scores.length-1; i++) {
for (int j = 0; j < scores.length-1-i; j++) {
if(scores[j]<scores[j+1]){
double temp = scores[j];
scores[j] = scores[j+1];
scores[j+1] = temp;
}
}
}
System.out.println("排序后:");
for (double d : scores) {
System.out.print(d+" ");
}
}
}