2013-08-26 7 views
0

지금까지 이미 내 앱이 작동하고 있었지만 지금은 문제가 있습니다. 참고로, 내 앱은 사용자 입력을받는 것입니다 (사용자가 일부 문장을 입력하면 앱에서 모호한 단어/s를 찾아서 그 의미를 표시합니다). 복수 결과 ​​배열 표시

는 내가 가지고있는 코드 :

final String[] words = {"cowboy", "animal" , "monster", "duck"}; 
final String[] meanings = { "meaning1", "meaning2", "meaning3", "meaning4" }; 

private void initControls() { 
// TODO Auto-generated method stub 
text = (EditText) findViewById (R.id.editText1); 

view = (TextView) findViewById (R.id.textView1); 

clear = (Button) findViewById (R.id.button2); 

clear.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     text.setText(""); 
     view.setText(""); 
    } 
}); 

ok = (Button) findViewById (R.id.button1); 
ok.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     findAmbiguousWord(); 
    } 
}); 
} 

private void findAmbiguousWord(){ 
String string = text.getText().toString(); 

int index = 0; 

for (int i = 0; i < words.length; i++) { 
    if (string.toLowerCase().contains(words[i].toLowerCase())) { 
     check = true; 
     index = i; 
    } 
} 

view.setText(check ? meanings[index] : "No ambiguous word/s found."); 
} 

하지만 같은 문장을 입력 할 때마다 :

My friend is a cowboy. He is also fond of duck. 

그것은 단지 즉 카우보이 첫 번째 단어를 표시합니다. 다른 단어를 어떻게 표시합니까? 도움이 절실히 필요합니다. 미리 감사드립니다!

+0

당신은 컬렉션을 사용해야합니다. – SLaks

+0

http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html – SLaks

답변

0

당신은 인스턴스 A Set를 들어, 컬렉션의 결과를 추가하거나 List 수 :

private void findAmbiguousWord(){ 
String string = text.getText().toString(); 
// create a set to store the results 
Set<String> result = new HashSet<String>(); 
for (int i = 0; i < words.length; i++) { 
    if (string.toLowerCase().contains(words[i].toLowerCase())) { 
     // ambiguous word, we need its meaning! 
     result.add(meanings[i]); 
    } 
} 

// display the results if there are some 
view.setText(result.isEmpty() ? "No ambiguous word/s found." : result.toString()); 
} 
+0

감사합니다. 코드를 설명해 주시겠습니까? 또한 괄호를 제거하려면 어떻게해야합니까? – Dunkey

+0

괄호는 HashSet.toString() 메서드로 추가됩니다. 설정된 객체를 반복하여 문자열을 사용자 정의하고 직접 만들 수 있습니다. – Guillaume

0

색인을 하나만 저장하는 대신 루프에서 색인 목록을 사용하거나 출력 문자열을 작성하십시오.

+0

안녕하세요, 샘플 코드를 제공해 주시겠습니까? 덕분에 – Dunkey

0
StringBuilder ambiguousWords = new StringBuilder(); 
for (int i = 0; i < words.length; i++) { 
    if (string.toLowerCase().contains(words[i].toLowerCase())) { 
     check = true; 
     ambiguousWords.append(meanings[i]); 
    } 
} 

view.setText(check ? "No ambiguous word/s found." : ambiguousWords.toString()); 
+0

여기에 StringBuilder를 어떻게 사용합니까? – Dunkey

+0

String을 작성합니다. String는 모호한 단어의 의미입니다. 분명히 당신은 append (words [i] + ":"+ meanings [i] + "\ n")와 같이 더 멋진 것을 할 수 있습니다; – Harry