我試圖標記New direction
添加到ArrayList mergeArray
時,我發現在buffer
ArrayList中的第二3
的價值,但我總是讓ArrayList中第一個3
值獲取第二個相同的值。我怎麼能在阿姆斯特丹之後獲得第二個?ArrayList中<String>
我很感激任何幫助。
輸出:
paris
3
water
ball
money
Amsterdam
3
door
輸出應該看起來像這樣:
paris
3
water
ball
money
New direction
Amsterdam
3
door
代碼:
public static void main(String[] args) {
ArrayList<String> buffer = new ArrayList<String>();
ArrayList<String> mergeArray = new ArrayList<String>();
String route = "3";
String direction = "paris";
String start = "Amsterdam";
buffer.add("paris");
buffer.add("3");
buffer.add("water");
buffer.add("ball");
buffer.add("money");
buffer.add("Amsterdam");
buffer.add("3");
buffer.add("door");
for (String line : buffer) {
if (line.equals(route)) {
mergeArray.add(line);
int index = buffer.indexOf(line);
String prevElement = buffer.get(index - 1);
if (prevElement == direction) {
String addElem = buffer.get(index + 1);
mergeArray.add(addElem);
} else if (prevElement == start) {
mergeArray.add("New direction");
}
}
}
for (String key : mergeArray) {
System.out.println(key);
}
}
使用等於而不是==來檢查字符串是否相等 – giorashc
我改變了它,但是我沒有得到相同的輸出也沒有這個標記'新方向'? – TheBook
從java 7開始,==默認爲場景後面的.equals,所以你會得到相同的輸出。如果您使用的是Java 6或更低版本,那麼您必須明確地使用.equals。 –