2013-04-14 4 views
-1

하나의 텍스트 영역에있는 모든 문자를 계산하고 다른 텍스트 영역에 결과를 출력해야합니다.배열의 결과를 텍스트 영역에 표시하려고 시도합니다.

계산 부분을 할 수는 있지만 다른 텍스트 영역에 표시 할 결과를 얻을 수 없습니다. 배열의 마지막 항목 만 출력합니다.

String str=enterTextArea.getText(); 

char[]myArry = str.toCharArray(); 
for(int counter =0;counter<myArry.length;counter++){ 
    char ch= myArry[counter]; 
    int count=0; 
    for (int i=0; i<myArry.length; i++){ 
     if (ch==myArry[i]) 
      count++; 
    } 
    boolean flag=false; 
    for(int j=counter-1;j>=0;j--){ 
     if(ch==myArry[j]) 
      resultTextArea.setText(ch + ":"+"\t"+count + "\n"); 
     flag=true; 
    } 
    if(!flag){ 

     resultTextArea.setText(ch + ":"+"\t"+count + "\n"); 
    } 
} 
+0

누군가 편집을 통해 OP 코드를 삭제했거나 코드가 실제로 이와 유사 했습니까? 이것은 전혀 컴파일되지 않습니다. for (j) 루프에서'ch'를보세요. – Kent

+0

다른 편집을했는데, 이것이 OP의 원래 코드 인 것입니다. – Kent

+0

@Kent [편집 기록] (http://stackoverflow.com/posts/16003817/revisions)을 보면 코드를 변경하는 유일한 사람이 있음을 알 수 있습니다. OP - 좀 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

답변

2

당신은 use append하지 setText로합니다.

setText 정확하게 : 텍스트를 설정합니다. 추가 ... 글쎄, 추가.


관련이 없지만 코드는 그대로 읽을 수 없습니다. 들여 쓰기를하십시오.

+0

굉장합니다. 대답 데이브. 나는 그것에 덧붙일 생각조차하지 않았다 .. GANGBUSTERS와 같이 일했다! 백만에게 감사드립니다. – user2280437

1

textArea.append 이외의 부분에는 구현 논리에도 문제가 있습니다. 표시 부분을 고정한 경우에도 올바른 결과가 인쇄되지 않습니다.

이이 클래스에서 할당 말했다 때문에, 난 그냥 오류를 수정하지 않습니다, 단지 그들을 지적 : 루프 for(int i=0;...)에 대한

  • (가) 더 나은 for(int i=counter..) or counter+1로 변경됩니다

    , 방법에 따라 달라집니다 것 당신은 카운트를 증가시킵니다. 그렇지 않으면 몇 가지 문자가 여러 번 계산됩니다. 이 문자열에 대해 생각해보십시오 : ababab...[ab]x10..ab 올바른 결과는 a:10 and b:10입니다. 당신의 논리는 내가 생각하는대로 인쇄되지 않을 것이다.

  • 문제 해시 테이블과 같은 데이터 구조로 루프 단에 용해 될 수있다 :

하면 루프의 첫 번째 요소의 어레이는 그 해시 테이블 char 단지 ++ 그 값의 경우, 그렇지 않으면 해당 HT에 새 요소를 넣고 char을 키로, 1을 값으로 사용합니다. 이 HT는 겉치름 밖에서 선언 될 수 있습니다. 전체 배열을 반복 한 후 HT에서 모든 요소를 ​​인쇄하기 만하면 결과가 나타납니다.

도움이 되길 바랍니다.

관련 문제