2014-02-06 2 views
0

내 코드는 문자열 입력을 분리하여 구분하고 특정 문자가있는 문자를 찾은 다음 인쇄합니다. 이제는 같은 단어가 한 번만 인쇄되도록하고 싶습니다. 예를 들어, 입력이 "멋져 보이면 그녀는 친절합니다." 그러면 출력은 "she \ n nice"가 될 것입니다. 이것은 현재 코드입니다.문자열에서 같은 단어를 확인하는 방법은 무엇입니까?

Scanner kybd = new Scanner(System.in); 
String s = kybd.nextLine(); 
String[] arr = s.split(" ");  
for (String ss : arr) { 
    String []ary = {ss}; 
     for(int i = 0; i < ary.length; i++){ 
      int numindex = ss.indexOf("e"); 
      int numindex2 = ss.indexOf("E"); 
      if (numindex != -1){ 
       System.out.println(ary[i]); 
      } 
      else if(numindex2 != -1){ 
       System.out.println(ary[i]); 
      } 
     } 
    } 

이 작업을 수행하는 방법에 대한 제안은 만족 스러울 것입니다.

답변

4

HashSet<String>에 단어를 추가하십시오.

그런 다음이 HashSet을 반복하여 단어를 출력하십시오.
중복되는 (추출하는 동안) 경우에도
한 번 출력됩니다.

HashSet은 중복을 제거합니다.
(HashSet에 삽입하는 동안 해당 작업을 수행합니다).

은 자세한 내용은 여기를 참조하십시오 : HashSet

+0

사용할 수 있습니다 단어에서 문장 순서 (저장) ArrayList에와 (이전의 존재를 테스트 용) HashSet의 유지하기 위해; 효율성에 대한 우려가 없다면 (작은 목록은 없을 것입니다.) List.contains는 존재 테스트에 충분할 것이고 (Set는 건너 뛸 수 있습니다.) 수동 배열보다 훨씬 쉬울 것입니다. – user2864740

+0

아니요, 주문을 유지하기 위해 TreeSet을 사용합니다. 최소한이 시나리오에서. http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html –

+0

오, 확인. 나는 당신의 의견을 오해했습니다. 어쩌면 당신은 당신의 코멘트에 삽입 명령을 언급하는 것을 언급해야합니다. 그래, 좋아. –

관련 문제