如何从数组中删除每三个元素作为循环?

Posted

技术标签:

【中文标题】如何从数组中删除每三个元素作为循环?【英文标题】:How to delete every third element as a loop from an array? 【发布时间】:2018-01-22 00:59:14 【问题描述】:

将 6 个数字相加为 1,2,3,4,5,6 需要删除循环中相差2的值。

期望的结果:在第一个循环中删除 3,然后是 6,然后是 4,然后是 2,然后是 5,最后是 1。

这是我的代码:

while(array.length ! = 1) 
 

    for(int i =2; i<array.length; i=i+2) 
     
         array = ArrayUtils.remove(array, i); 
         System.out.println("Content of Array after removing an object : " 
            + Arrays.toString(array)); 
                   

得到结果为

移除对象后数组的内容:[1, 2, 4, 5, 6]

移除对象后的数组内容:[1, 2, 4, 5]

移除对象后数组的内容:[1, 2, 5]

移除对象后数组的内容:[1, 2]

请帮忙

【问题讨论】:

请向我们展示您目前的成果。 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出以及您实际获得的输出(控制台输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQ 和How to Ask。 模是你的朋友 meta.***.com/questions/334822/… @NPE 共享 d 代码。 【参考方案1】:

提供第二个示例运行将帮助我确定此代码是否有效,但到目前为止我已经完成了您想要的操作。我正在四处寻找未回答的 C# 问题,所以我很抱歉,但它是用 C# 编写的,而不是 Java。对不起,我的工作日结束了!

var myList = new List<int>() 
  1, 2, 3, 4, 5, 6
;
var broken = 0;
var step = 2;

while (myList.Count > 0) 
  for (var i = step; i < myList.Count; i += step) 
    if (broken == 1) 
      myList.RemoveAt(i);
      myList.ForEach(x => Console.Write("0 ", x));
      Console.Write("\n");
      step--;
      broken = 0;
      continue;
    
    if (!(i + step >= myList.Count)) 
      myList.RemoveAt(i);
      myList.ForEach(x => Console.Write("0 ", x));
      Console.Write("\n");
     else 
      myList.RemoveAt(i);
      myList.ForEach(x => Console.Write("0 ", x));
      Console.Write("\n");
      broken = 1;
      break;
    
  

输出是:

1 2 4 5 6
1 2 4 5
1 2 5
1 5
1
[list has no elements at this point]

【讨论】:

【参考方案2】:

看起来,一旦数组减少到两个元素,您可能会收到 NullPointerException,因为您试图引用索引为“2”的元素(因为您设置 int i =2),但只有两个元素,而索引“2”将引用不存在的第三个元素。

一种方法是添加边缘情况条件。例如,当数组大小小于或等于 3 时,您可以创建一个 if 语句,并更改它删除的元素。

这里的问题不是代码问题,而是逻辑问题。

【讨论】:

以上是关于如何从数组中删除每三个元素作为循环?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 forEach 循环中的数组中删除元素?

如何使用python从数组中删除特定元素

不用循环,python numpy 数组如何对每个元素进行操作?

如何去掉一个数组的重复元素:数组去重

Xcode怎样查看数组中每一个数的值?

如何返回数组中的第三大数