2013-03-18 3 views
4

이 방법에서 for 루프에 필요한 구문을 찾을 수없는 것 같습니다. 문자열 suit에있는 단어를 반복하여 찾고 있습니다.문자열에서 단어를 검색하기위한 루프

편집 : 주목할 것은 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");은 단어 배열을 제공합니다. –

+0

왜 그렇게 유니 코드입니까? ;) –

+0

나는 그것을 더 안정적이라고 발견했다. –

답변

5

당신은 모든 space character (U+0020)에 분할

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

를 사용할 수 있습니다. 대안

:

이 공백 문자마다 시퀀스 분할
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

왜 소송에 대한 열거를 사용하고 카드 클래스 또는 좀 더 뭔가를 추가하지 객체 지향? Abstract 클래스 카드 또는 인터페이스 카드를 사용하여 문자열 비교를 반복하는 대신에 Card 인스턴스 내부에 논리가 필요한 것을 추가 할 수 있습니다.

그러나 : String.split(String regex)이 작동해야합니다. 적절한 regular expression을 선택하십시오.

+0

Java에서 배열을 사용하여 연습 할 수 있도록이 지정에 ArrayList를 사용하고 있습니다. – Bob

+0

나는 내가 미래에 도움이 될 수있는 별도의 접근 방식을 제공하고 있다고 생각했다. 예를 들어, ArrayList 을 사용할 수 있습니다. 여기에서 Card에는 수트 용 열거 형과 카드 유형 (예 : ace, 2, 3 등)이있을 수 있습니다. 문자열 비교는 상대적으로 느린 경향이 있습니다. –

+0

그래, 내가 그것에 대해 갈 길을 찾고 있었을 때 가능한 열의를 보았다. 어쨌든 프로그램에서이 메서드를 호출하지는 않을 것입니다. 인터페이스를 채우는 데 필요한 요구 사항이었습니다. 이미 arraylist의 문자열로 정장과 순위를 가진 중첩 for 루프를 사용하여 52 개의 카드를 작성했습니다. – Bob

0

당신이 원하는 모든 "스페이드"를 포함하는 문자열을 교체하는 경우 : 당신이 다음 다른 이유로 문자열 suit을 분할 다른 답변을

관련 문제