java - 我想在不减小其大小的情况下将元素添加到特定位置的数组中,我试过了,但它显示(OutOfBoundsException)
问题描述
import java.util.Scanner;
public class AddElementToSpecificPosition {
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
int[] array =arrayDetails();
scanner.nextLine();
System.out.println("Enter the position for the element \r");
int position = scanner.nextInt();
System.out.println("Enter the element \r");
int element = scanner.nextInt();
addElementToSpecificPositoin(array,position,element);
}
//getting details form user for arry
private static int [] arrayDetails() {
System.out.println("Enter the length for the array \r");
int length = scanner.nextInt();
scanner.nextLine();
int [] intArray = new int[length];
System.out.println("Enter the numbers for the array \r");
for(int i=0; i<intArray.length; i++) {
intArray[i] = scanner.nextInt();
}
return intArray;
}
//trying to add an element to specific position
private static void addElementToSpecificPositoin(int[] array, int position, int element) {
int lastIndexValue = array[array.length-1];
for (int i=array.length-1; i>position-1 ; i-- ) {
array[i]=array[i-1];
}
array[position-1] = element;
int addedPosition = array.length ;
int [] newArray = new int[addedPosition+1];
for (int i =0; i<newArray.length; i++) {
newArray[i] = array[i];
}
newArray[addedPosition] = lastIndexValue;
for (int j =0; j<newArray.length; j++) {
System.out.println(newArray[j]);
}
}
}
解决方案
array
尺寸是 X。不管它是什么,我们都称它为 X。然后你做:
int addedPosition = array.length;
int[] newArray = new int[addedPosition + 1];
换句话说,newArray
大小为 X+1。然后,您遍历 0newArray.length
并为每个 i 解析array[i]
。当然,这意味着array[X]
解决了一个不存在的条目。
与其问 SO,不如花一点时间学习调试。这简单!您真正要做的就是弄清楚一行代码应该做什么(只需查看它并基本上“成为计算机”。如果您愿意,请使用笔和纸),然后逐行运行代码并检查代码实际上做了你认为应该做的事情。
如果,逐行思考并解决,您意识到代码不是您想要的:太好了,您发现了一个错误。修复它并继续应用此过程。否则,您会发现代码实际执行的操作与您认为的不匹配。调试器在执行此操作时提供了很多帮助,但大量System.out.println
语句也可以提供帮助。一旦您意识到例如 4 大小数组的示例输入最终运行newArray[4] = array[4]
.
推荐阅读
- c - 如何在 C 中使用 send() 计算字节数,包括协议大小?
- node.js - 使用 Jest 的 Passport 的简单 Mock 函数
- angular6 - 在 Angular Universal 中访问本地存储
- android - 有效地调整和旋转图像文件(使用/不使用渲染脚本)
- python - 如何在具有相同排序类型的熊猫中连接分组数据框?
- javascript - 当部分到达顶部时,固定左 div 并滚动右 div 直到该部分的末尾
- cluster-computing - 将新节点添加到集群时 Aerospike 丢失数据
- javascript - 打字稿:`let result: { [key: T[K]]: T } = {};` 不起作用,如何根据泛型键入我的对象?
- java - Java中的正则表达式 - 解析字符串数组
- python - “python”环境变量设置在哪里?