import java.util.Scanner;
public class Homework{
public static void main(String[] args){
//1.先写一个固定元素的冒泡排序,从小到大的一维数组
//(1)如int[] a = {13,51,10,9}
//第一轮排序:最大的放到最后
// 第一次排序: 13 51 10 9
// 第二次排序: 13 10 51 9
// 第三次排序: 13 10 9 51 第1轮 有arr.length - 1次排序
// 第二轮排序:...
// 共需三轮排序 =>arr.length - 1 次
//2.改为随用户输入的
//(1)创建一个扫描器
//(2)询问初始数组的元素个数
//(3)遍历数组,每个元素都为输入
//3.提示是否需要更改,需要则用户输入要添加的元素,并仍然是从小到大的(while break来实现)
//(1)用一个String answer来接收回答的内容
//(2)if else多分支运行
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入数组元素的个数");
int num = myScanner.nextInt();
double[] arr = new double[num];
for(int i = 0;i < num;i++){
System.out.println("请输入数组第"+ (i + 1) +"个元素的值");
arr[i] = myScanner.nextDouble();
}
for(int i = 0;i < num - 1;i++){//第i+1轮排序
for(int j = 0;j < num - i - 1;j++){//第j+1次排序
if(arr[j] > arr[j + 1]){//前一项比后一项大时替换
double temp = arr[j + 1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
//遍历数组,输出排序后的结果
System.out.print("\n排序后的结果为:\n");
for(int i = 0;i < num;i++){
System.out.print(arr[i] + " ");
}
while(true){
System.out.println("\n数组内元素是否需要更改?请填写“增加”/“减少”/“不更改”");
String answer = myScanner.next();
if("增加".equals(answer)){//这里直接answer == "增加"不可,要用equals判断
double[] increase = new double[arr.length + 1];
System.out.println("输入增加的元素值:");
double increaseNum = myScanner.nextDouble();
//遍历arr的元素,如果比添加的元素小,就直接赋给increase对应的第几个元素
//当arr[i]第一次等于或大于increaseNum时,记录索引,increaseNum赋给increase[i]跳出
int index = 0;
for(int i = 0; i < arr.length;i++){
if(arr[i] < increaseNum){
increase[i] = arr[i];
}else{
index = i;
increase[i] = increaseNum;
break;
}
}
//接着循环
for(; index < arr.length;index++){
increase[index + 1] = arr[index];
}
//让arr也指向increase的地址,并循环输出
arr = increase;
System.out.println("增加后数组结果为:");
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] + " ");
}
}else if("减少".equals(answer)){
double[] decrease = new double[arr.length - 1];
System.out.println("输入要删除的元素值:");
double decreaseNum = myScanner.nextDouble();
//考虑到可能有多个与输入值相同的元素,设置只删除第一个,用index来
//如果没有与输入值相同的元素,输出提示,重新输入=>嵌套一个循环。
while(true){
int index = -1;
for(int i = 0,j = 0;i < arr.length;i++){
if(arr[i] == decreaseNum && index == -1){
index = i;
continue;
}else{
if(j < decrease.length){
decrease[j] = arr[i];
}
j++;
}
}
if(index == -1){
System.out.println("当前数组内没有找到与" + decreaseNum + "匹配的值,请重新输入:");
decreaseNum = myScanner.nextDouble();
}else{
arr = decrease;
System.out.println("减少后数组结果为:");
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] + " ");
}
break;
}
}
}else if("不更改".equals(answer)){
System.out.println("最终数组结果为");
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i] + " ");
}
break;
}else{
System.out.println("输入有误,请重新输入");
}
}
}
}
Java 基础 | 用户输入一组数,自动排序,可随意增加、减少数组元素,返回排序后的数组
最新推荐文章于 2024-05-16 10:23:10 发布