gpt4 book ai didi

java - 在特定位置插入元素没有发生

转载 作者:行者123 更新时间:2023-12-02 02:53:16 25 4
gpt4 key购买 nike

我试图在特定位置插入一个元素,但代码抛出错误

java.lang.ArrayIndexOutOfBoundsException

我是java新手,所以任何人都可以帮助我纠正我的代码。我知道 insertPosition 方法的 insertArr[i+1] = insertArr[i]; 中做错了什么。任何帮助都将被视为良好的帮助。

我的代码

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] insertArr = {10,30,20,40,60,50,90,70,80};
Arrays.sort(insertArr);
int arrLength = insertArr.length;
System.out.println("At what position you want to insert");
int pos = in.nextInt();
System.out.println("What element you want to insert");
int key = in.nextInt();
insertPosition(insertArr,arrLength,pos,key);
for(int num : insertArr){
System.out.println(num);
}
}
public static int insertPosition(int insertArr[],int arrLength, int pos, int key){
if(pos > arrLength)
return arrLength;
for(int i=arrLength-1; i>=(pos-1); i--)
insertArr[i+1] = insertArr[i];
insertArr[pos-1] = key;
return arrLength;
}

最佳答案

您需要确保 i 小于 insertArray 长度且大于零。

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] insertArr = {10, 30, 20, 40, 60, 50, 90, 70, 80};
Arrays.sort(insertArr);
System.out.println("At what position you want to insert");
int pos = in.nextInt();
System.out.println("What element you want to insert");
int key = in.nextInt();
insertPosition(insertArr, pos, key);

Arrays.stream(insertArr).forEach(System.out::println);
}

public static void insertPosition(int insertArr[], int pos, int key) {
if (pos >= insertArr.length)
return;
for (int i = insertArr.length - 1; i > (pos - 1) && i < insertArr.length -1; i--)
insertArr[i + 1] = insertArr[i];
insertArr[pos - 1] = key;
}

在java中,数组的长度是不可变的,当您从不存在的索引调用元素时,您会收到此异常。为了避免在 for 循环中出现这种情况,您需要检查 if i< array.length或者我 < array.length -2.

其次,您的插入方法可以简化,如上所示。

关于java - 在特定位置插入元素没有发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43479689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com