所以我在高中参加 AP 计算机科学类(class),所以我的经验不是很丰富。我有一个程序需要我从文件中读取数字,将这些数字放入数组中,然后从数组中删除所有 0。
如果数字是:0,2,4,6,0,5,3,5... 我需要创建一个数组:[0,2,4,6,0,5,3,5] 然后删除 0:[2,4,6,5,3,5]
我必须使用数组来执行此操作,并且不允许我创建第二个数组来执行此操作。我查遍了网上和 Java API,以找到一种可以从数组中删除元素的方法,但我就是找不到。如果有人对我可以使用的任何想法或指导我的方向有任何想法,我们将非常感谢您的建议。
这是逐字逐句的疑问词: 1. 编写一个程序,读取文本文件(compact.txt)并将整数存储在数组中。您的讲师将提供此文本文件。 2. 编写一个compact方法,从数组中删除所有零,保持元素的顺序不变。该函数内的所有局部变量都必须是标量。换句话说,你可能无法使用第二个数组来解决问题。 3. 不要简单地通过只打印数组中的非零值来解决问题。 compact 方法必须从数组中删除所有零。
最佳答案
您可以尝试以下操作:由于您无法修改数组的长度,因此您可以对其进行排列,以便将所有零放在数组末尾并使用值-1
(这是可选的) ,只是为了表明它们是零)。
public static void main(String[] args)
{
int[] arr = { 0, 1, 2, 0, 3, 0, 4, 0, 5, 6, 7 };
int[] arrWithoutZeros = compact(arr);
for (int i : arrWithoutZeros) {
System.out.println(i);
}
}
private static int[] compact(int[] arr)
{
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 0) {
int j = 0;
for (j = i; j < arr.length - 1; j++) {
arr[j] = arr[j + 1];
}
arr[j] = -1;
i--;
}
}
return arr;
}
输出:
1
2
3
4
5
6
7
-1
-1
-1
-1
注意:这符合问题要求:
- 保持元素的顺序不变(改变其位置,但不改变顺序)
- 不要使用第二个数组
- 仅打印非零元素无法解决
- 从数组中删除零(现在为
-1
)
关于java - java中从数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421253/