2017-05-04 64 views
-4

我正在要求用戶輸入一個整數數目未定的分配的第二元件,然後將這些數字是在其他計算中使用。但是例如,如果我有這6個數字。 1 2 3 4 5 6,我想從輸入中只提取2 4和6,我該怎麼做? (注意這僅僅是一個例子,用戶可以輸入20個不同的數字,或者只有4個)我只是想能夠選擇每個第二個元素。要添加更多信息,我需要數組中的第一個數字用於一次計算,然後第二個數字用於另一次計算,然後是第一個和第二個計算。基本上我希望能夠將每個偶數組索引號分配給一個整數,並將每個奇數數組索引號分配給另一個整數。像這樣:爪哇如何採取陣列

「如果(ⅰ%2 == 0){INT第一=號碼[I]; 的System.out.println(」 這是第一個」 +第一)} 否則如果(I%2 == 1){INT第二=號碼[I];是System.out.print( 「這是第二個。」 +第二);}」 但是,當我這樣做,它僅出現在第一個..

+0

是的,我知道如果我想第二索引我不得不採取數組[1],但如果我想要第23數組索引,並不知道當我編碼時會有第23數組索引。用戶可以輸入多少個輸入 –

+0

您知道如何編寫for循環嗎?花一點時間思考起始索引將會是什麼,以及在遍歷數組時迭代索引的次數。 –

+0

由於數組索引從'0'開始,您需要收集數組中所有索引爲奇數的元素。 –

回答

0

你需要收集所有元素的索引爲數組中的奇由於在0數組索引開始。

// all of the second elements in numbers are collected into partial array 
int[] partial = new int[numbers.length >> 1]; 
// the initial value of i=1 means iterate the first second element at first 
// i+=2 means iterate the next second element in array 
for(int i=1;i<numbers.length;i+=2){ 
    partial[(i-1)>>1] = numbers[i]; 
} 
0

所以只是爲了澄清要在陣列中,而無需任何影響數字的順序每隔第二次迭代?那麼這個數組的數組可以是4,2,6,8,在這個例子中返回值應該是2和8?

如果是這種情況,那麼你可以可以分配for循環只讀每秒迭代。

要做到這一點,你需要的數組的長度。

int arrLength = arr.length; 
for (int i = 1; i < arr.length; i = i+2) { 
#dosomething 
} 
+0

重要的是要注意,數組的迭代總數應該總是n-1,其中n是數組的長度。 如果用戶輸入10個數字,則數組的總長度爲10。但是,當通過迭代讀取數組迭代 - 您將始終開始計數爲0 ...因此在此示例中,最大迭代次數爲9. 此外,我們使用<而不是<=上面的原因分配for循環中的最大迭代 –

+0

但是,如何使用數字4和6?因爲如果我爲(int i = 0; i

+0

上面做了一個快速編輯 - 循環應該從1開始不是0 ... 要引用實際數組,您可以使用賦值變量i來引用數組的正確索引...因此可以使用4和6. 在你上面的例子中1 2 3 4 5 6 7 8 ... 第一次迭代將是i = 1:你可以引用array [i]返回2 下一次迭代將是i = 3 :你可以參考array [i]返回4 下一次迭代將是i = 5:你可以引用array [i]返回6 依此類推.... –

0

如果你熟悉Java,然後8流,你可以使用一個IntStream生成索引,然後挑選出每個奇數之一:

int[] everySecond = IntStream.range(0, array.length) 
    .filter(i -> i % 2 == 1).mapToInt(i -> array[i]).toArray(); 
0
// This is from user 
    int[] userInput = {}; 

    int[] pickedNumbers = new int[userInput.length/2]; 
    if(userInput.length > 1) 
    { 
     for (int i = 1; i < userInput.length; i = i + 2) 
     { 
      pickedNumbers[i/2] = userInput[i]; 
     } 
    } 
    // pickedNumber is the array you can use. 
+1

解釋這實際上做了什麼?因爲對我來說,它只是接縫,你把數組pickNumbers,並把偶數索引的另一個數組。那對我有什麼幫助? –

+0

是的。這就是它的確。你可以把你的自定義邏輯(你想要的)放在循環中並豐富你的pickNumbers。 – Anil