51,408
社区成员
发帖
与我相关
我的任务
分享
package amqp.publisher;
import java.lang.reflect.Array;
import java.util.Scanner;
/**
* @ProjectName: day01
* @Package: amqp.publisher
* @ClassName: ArrayInsert
* @Author: Vector
* @Date: 2021/12/14 14:21
* @Description: Classes Default Description
*/
public class ArrayInsert {
/**
* 定义原始数组
*/
private static int [] inItArr = {99,85,82,63,60};
public static void main(String[] args) {
boolean enable = false;
do {
System.out.println("请输入新成绩:");
Scanner inScores = new Scanner(System.in);
int inScore = inScores.nextInt();
System.out.println("插入成绩的下标是:");
Scanner inSubScript = new Scanner(System.in);
int inIndex = inSubScript.nextInt();
int[] ints = updateArr(inItArr, inScore, inIndex);
System.out.println("插入后的成绩信息是:");
for (int i : ints) {
System.out.print(i + "\t");
}
System.out.println("\n"+"是否继续:");
Scanner enabled = new Scanner(System.in);
enable = enabled.nextBoolean();
}while (enable);
}
/**
*
* @param inItArr 初始数组
* @param inScore 需要存入的成绩数值
* @param inIndex 需要存入成绩的下标
* @return 新数组
*/
private static int [] updateArr(int [] inItArr,int inScore,int inIndex){
int [] newArr = new int[inItArr.length+1];
//如果插入的下标是0
if (inIndex == 0){
newArr[0] = inScore;
for (int i = 1; i < newArr.length; i++) {
for (int j = 0; j < inItArr.length; j++) {
if (j == i-1){
newArr[i] = inItArr[j];
}
}
}
}
//如果插入的下标大于等于原数组索引长度
else if (inIndex>=newArr.length-1){
for (int i = 0; i < newArr.length; i++) {
for (int j = 0; j < inItArr.length; j++) {
if (i==j){
newArr[i] = inItArr[j];
}
}
}
newArr[newArr.length-1] = inScore;
}
//如果插入的下标在0和最大索引长度之间
else {
//截取数组
for (int i = 0; i < newArr.length; i++) {
for (int j = 0; j < inItArr.length; j++) {
if (inIndex == i){
newArr[i] = inScore;
continue;
}else if (i>inIndex){
newArr[i] = inItArr[i-1];
continue;
}else if (i<inIndex){
newArr[i] = inItArr[i];
continue;
}
}
}
}
return newArr;
}
}
基本满足需求
说是请输入,那就是先来个Scanner,然后要输下标,题目上又说要比较,那就是将这个数插入到对应的下标之前,大概就这样,先敲了再说