java - java中从数组中删除元素

标签 java arrays

所以我在高中参加 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/

相关文章:

java - 无法通过 ng-submit="controller.delete() 对表单执行操作从数据库中删除项目

java - 无法限制 Android 应用程序的 google Api key

java - 为什么在调试 android google maps 示例时不调用我的 onLocationChanged() 方法?

java - 如何在不使用排序算法的情况下在 java 中对数组进行排序,同时忽略其他值?

c# - 根据大写字母的位置对字符串数组进行排序

python - Numpy:如何将 (4, ) 数组和 (9, 9) 数组添加到 (9, 9, 4) 数组?

Java 聊天服务器通过 NETCAT 连接

java - Apache POI - Excel 写入 - 锁定单个单元格

java - 如何使用正则表达式拆分 MCQ(多项选择题)字符串

c++ - 迭代器库中的std::size()在传递给函数的C样式数组上不起作用