gpt4 book ai didi

java - 为什么在向 java 数组中插入新元素时会采用负索引值?

转载 作者:行者123 更新时间:2023-12-02 12:55:13 26 4
gpt4 key购买 nike

我正在尝试用java代码将新元素插入到数组中,我理解程序的大部分内容,除了一行代码:“int newindex = -index-1;”。为什么索引前面要用负号?

这是完整的程序:

public class ArrayManipulation2 {

public static void main(String[] args) {

int[] array = {6,3,5,2,-9,-5,-1,0};
Arrays.sort(array);
printArray(array);

int index= Arrays.binarySearch(array, 1);
int newindex = -index-1;

array = insertElement(array, 1, newindex);
printArray(array);
}


public static void printArray(int[] array){

for(int i=0; i<array.length; i++){
if(i!=0){
System.out.print(", ");
}
System.out.print(array[i]);
}
System.out.println();

}

public static int[] insertElement(int[] orginal, int element, int index){
int length = orginal.length;
int[] destination = new int[length+1];
System.arraycopy(orginal, 0, destination, 0, index);
destination[index]=element;
System.arraycopy(orginal, index, destination, index+1, length-index);

return destination;

}
}

我需要知道为什么新索引被指定为“-index-1”?。

最佳答案

Arrays.binarySearch()如果该项目尚不存在于数组中,则返回一个负值,以便它可以区分该项目在哪里(如果存在)和应该在哪里(如果不存在)。

如果不考虑结果为正的情况,代码就不正确。

关于java - 为什么在向 java 数组中插入新元素时会采用负索引值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44448233/

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