2013-03-18 177 views
4

我似乎無法找到此方法中for循環所需的語法。我正在尋找遍歷字符串suit中的單詞。For循環搜索字符串中的字

編輯:有一點需要注意的是,cardArray是一個ArrayList。

public String getSuit(int card){ 
    String suit = cardArray.get(card); 
    for (String word : suit){ 
     if (word.contains("SPADES")){ 
      suit = "SPADES";    
     } 
    } 
    return suit; 
} 
+1

'西裝

public String getSuit(int card){ String suit = cardArray.get(card); if (suit.contains("SPADES")){ cardArray.set(card, "SPADES"); } return suit; } 

。 split(「\ u0020」);'給你一組單詞。 – 2013-03-18 15:40:17

+0

爲什麼這麼unicode? ;) – 2013-03-18 15:40:35

+0

我發現它更可靠。 – 2013-03-18 15:42:18

回答

5

你可以使用

for (String word : suit.split(" ")) { 

拆就每space character (U+0020)

或者:

for (String word : suit.split("\\s+")) { 

此分割上空白字符的每個序列(這包括製表符,換行符等)。

2

嘗試拆分上空白的字符串:

String suit = cardArray.get(card); 
for (String word : suit.split("\\s+")){ 
    if (word.contains("SPADES")){ 
     suit = "SPADES";    
    } 
} 
0

爲什麼不使用枚舉的西裝,並把它添加到您的卡類或一些更面向對象的?你甚至可以擁有一張抽象類卡或一張接口卡,它可以讓你在卡片實例本身內部添加所需的任何邏輯,而不是迭代進行字符串比較。

但是:String.split(String regex)應該工作,只要選擇合適的regular expression

+0

我對這個任務使用了一個ArrayList,所以我可以在Java中使用Arrays做一些練習。 – Bob 2013-03-18 15:47:48

+0

我想我只是提供一個單獨的方法,可能在未來有所幫助。例如,你可以使用一個ArrayList ,其中Card有一個枚舉enum和一個表示可能是另一個枚舉類型(ace,2,3等)的類型的東西。字符串比較往往比較慢。 – 2013-03-18 15:51:25

+0

是的,當我尋找途徑時,我看到枚舉是一種可行的方法。無論如何,我不會在程序中調用這個方法,這只是我必須填寫接口的一個要求,因爲我已經創建了52個卡,其中包含一個嵌套的for循環,它們的套裝以及列表中的字符串排列在arraylist中。 – Bob 2013-03-18 15:56:22

0

如果你想要做的是替換含有「SPADES」字符串:如果要分割字符串suit某些其他原因再看看其他的答案