现在有如下⼀个数组: int[] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}; 要求将以上数组中的0项去 // 掉,将不为0的值存⼊⼀个新的数组,⽣成新的数组
时间: 2024-09-25 12:07:21 浏览: 46
要将给定数组oldArr中的所有0元素去掉,并将非零元素存储到一个新的数组中,可以按照以下步骤操作:
1. 创建一个新数组newArr,它的初始长度等于oldArr中非零元素的数量,因为我们不知道确切的数量,所以可以选择从最坏的情况开始,比如假设所有元素都是0。
```java
int[] newArr = new int[oldArr.length];
```
2. 使用一个循环遍历oldArr,当遇到非零元素时,将其添加到newArr中,同时更新新数组的索引位置。
```java
int index = 0; // 新数组的当前索引
for (int i = 0; i < oldArr.length; i++) {
if (oldArr[i] != 0) {
newArr[index++] = oldArr[i]; // 如果不是0,就将元素放入并增加索引
}
}
```
3. 循环结束后,index就是newArr的实际长度,如果需要,可以将它赋值给newArr的长度以保证数组实际占用的空间。
```java
if (index < newArr.length) { // 防止溢出
newArr = Arrays.copyOf(newArr, index); // 重新设置新数组的长度
}
```
现在,`newArr`就包含了原数组中不为0的所有元素。以下是完整的Java代码示例:
```java
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] oldArr = {1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};
int[] newArr = new int[oldArr.length];
int index = 0;
for (int i = 0; i < oldArr.length; i++) {
if (oldArr[i] != 0) {
newArr[index++] = oldArr[i];
}
}
if (index < newArr.length) {
newArr = Arrays.copyOf(newArr, index);
}
System.out.println("New array without zeros: " + Arrays.toString(newArr));
}
}
```
阅读全文