2017-08-14 69 views
-17

添加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]

請幫

+7

請告訴我們你到目前爲止的內容。 – NPE

+8

看起來您希望我們爲您編寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出以及實際獲得的輸出(控制檯輸出,回溯等)。您提供的細節越多,您可能會收到的答案就越多。檢查[FAQ]和[問]。 –

+3

modulo是你的朋友 –

回答

0

提供了第二個例子來看,將有助於我判斷這個代碼的工作,但我有它做你想要的東西。我在漫無邊際的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] 
1

它看起來像,一旦該陣列是下降到兩個元素,可能會收到一個NullPointerException因爲你正在試圖指元件與索引「2」(因爲你設置int i = 2),但是隻有兩個元素,而索引'2'會引用一個不存在的第三個元素。

這樣做的一種方法是添加邊緣情況。例如,您可以爲數組大小小於或等於3的if語句創建一個if語句,並更改它刪除的元素。

這裏的問題不是代碼問題,而是一個邏輯問題。

相關問題