【问题标题】: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]

请帮忙

【问题讨论】:

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

标签: java arrays


【解决方案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 语句,并更改它删除的元素。

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

    【讨论】:

      猜你喜欢
      • 2014-09-08
      • 2022-06-12
      • 2022-01-21
      • 2010-12-29
      • 2011-06-18
      • 1970-01-01
      • 2013-05-29
      • 2012-02-15
      相关资源
      最近更新 更多