有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

将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]

请帮忙


共 (2) 个答案

  1. # 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. # 2 楼答案

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

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

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