【问题标题】:Removing a number from array in Java从Java中的数组中删除一个数字
【发布时间】:2022-01-08 08:48:30
【问题描述】:

我想从数组中删除一个特定的数字

Integer[] arr = new Integer[7];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i;
        }
        Collections.shuffle(Arrays.asList(arr));

这是创建 0-7 的数字 但我不需要 0,我需要 1-7 的值

【问题讨论】:

  • This question 有几个建议。
  • 你为什么不用int i = 1开始你的for循环?

标签: java android arrays integer


【解决方案1】:

写入数组的第一个值是 0,因为您在 for 循环中将 i 初始化为 0。

因此,您的循环只会插入值 0 - 6

将此初始化更改为i = 1,此外您还需要将for循环的条件更改为arr.length + 1i &lt;= arr.length,因此它最多计数为7。

Integer[] arr = new Integer[7];
for (int i = 1; i < arr.length + 1; i++) {
    arr[i] = i;
}

除了更改循环本身之外,您还可以做的是更改循环体。分配给 arr[i] 时只需将 i 加 1:

for (int i = 0; i < arr.length; i++) {
    arr[i] = i + 1;
}

在这种情况下,我将从 0 计数到 6,并将 1 到 7 分配给您的数组

【讨论】:

  • 但是当我将 i 更改为 1 时,我得到了 1-6 的数组,其中一个元素为空值
  • 对不起。我第一眼就错过了这一点。修改了我的答案以满足您的标准。当然,在这种情况下,您还需要将条件更改为i &lt; arr.length + 1i &lt;= arr.length
  • 我还在我的答案底部添加了一个更简单的解决方案。您也可以只更改循环体中的赋值语句。
  • 是的,这正在工作
【解决方案2】:

将您的int i = 0 更改为int i = 1,如下所示:

   Integer[] arr = new Integer[7];
        for(int i = 1; i <8; i++){
            int value = i-1;
            arr[value] = i;
        }

        Collections.shuffle(Arrays.asList(arr));
        for(int i = 0; i < arr.length; i++){
                System.out.println("Result:"+arr[i]);
        }

控制台消息:

Result:7
Result:2
Result:6
Result:5
Result:4
Result:1
Result:3

【讨论】:

  • 但是当我将 i 更改为 1 时,我得到了 1-6 的数组,其中一个元素为空值
  • 给你。现在你有你的 1-6 洗牌。干杯!
  • 我没有显示内容..我需要没有值 0 的数组。从这个数组中我正在做其他事情
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 2021-09-10
相关资源
最近更新 更多