2014-03-25 46 views
-2

所以我有一串字符串,我想在for循環中循環。當我達到某個通過布爾檢查的字符時,我想在該點之後將列表中的每個項目都取出並從那裏切斷。如下所示:在Java中取出數組的一部分

for (int i = 0; i < charList.length; i++) 
{ if (charList[i] == "a") 
    { 
     //put every char in charList between i and the end into a new variable 
    } 
} 

有什麼方法可以做到這一點?哪些是推薦的?

+0

你有什麼問題? indexOf可以在子字符串上工作,這可能會更好。不確定Big-Oh的性能。 – duffymo

+0

查找'copyOfRange'方法:http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html – Tyler

+0

for和if檢查都沒問題。這是我不知道該怎麼做的評論部分。 –

回答

3

陣列集合具有copyOfRange()方法

for (int i = 0; i < charList.length; i++) 
{ if (charList[i] == 'a') 
    { 
     char[] newCharList = Arrays.copyOfRange(charList,i,charList.length);//put every char in charList between i and the end into a new variable 
     //do stuff 
     break; 
    } 
} 

如果您需要訪問外部的新陣列的for循環,確保進入前聲明它,即

char[] newCharList; 
for(... 
+1

我認爲作業就是創建一個完成這個任務的方法。 –

+1

不應該退出循環嗎? – Sionnach733

+0

這就是我一直在尋找的,謝謝! @Luiggi門多薩,這不是功課;我剛剛嘗試了編程挑戰,並被語法所困擾。不管怎麼說,還是要謝謝你! –

0

使用copyOfRange ()方法:

char[] charListCopy = Arrays.copyOfRange(charList, i, charList.size()); 
1

在您的if中,創建一個新char[],然後將字符放入其中。

char[] substr = new char[charList.length-i]; 
for (int j = 0; j < charList.length-i; j++) { 
    substr[j] = charList[i+j]; 
} 
break; // out of the loop over i 

我寫break但你可能會return荷蘭國際集團,或者你會宣稱substr超出這個範圍。我寫的代碼只是爲了給你提供這個想法。

我爲此做了一個簡單的ideone,這樣你就可以看到它的工作。

+0

我想你需要指定這段代碼放在OP發佈的'if'裏面。 –