2013-10-15 2 views
0

숙제를 위해 각 글자의 수를 결정해야합니다. 나는 이미 JOptionPane을 사용하여 숙제를 성공적으로 마쳤다. 하지만 JFrame에 표시하고 싶습니다. 텍스트 영역 입력에서 변환 할 수 있지만 문자열 영역에서 텍스트 영역 표시로 변환 할 테이블이 없습니다.JTextArea에서 String으로 변환하고 뒤로

:

for (short i = 0; i < (output).length(); i++) 
       { 
        char temp = Character.toLowerCase((output).charAt(i)); 
        if (temp >= 'a' && temp <= 'z') 
         counts[temp - 'a']++; 
       } 

       for (short i = 0; i < counts.length; i++) 
       { 
        output += (char) ('a' + i) + ":\t " + counts[i] + "\n"; 
       } 

       for (short i = 0; i < (input).length(); i++) 
       { 
        if ((output).charAt(i) == 'a' || (output).charAt(i) == 'A') 
         count++; 
       } 
       txaResults.setText(output); 
+0

@ 작은 아이. 내가 가지고있는 문제 (나는 생각한다)는 결과를 표시하는 것이다. 나는 입력 된 JTextArea에서 텍스트를 얻었고 문자열로 변환 할 수 있다고 생각한다. 결과를 결정하는 논리도 작동하는 것처럼 보입니다. 문제는 "results"JTextArea가 결과로 채워지지 않는다는 것입니다. 그게 명확한 지 모르겠다. – user2802785

+0

내 대답 좀보세요. JOptionPane 대신 JFrame에 단어의 빈도를 표시하고 싶지 않습니까? –

+1

@ 작은 아이. . 아뇨, 미안 해요. 각 단어가 얼마나 자주 나타나는 지 알아 내려고합니다. 그 논리는 JOptionPane을 단순히 사용했을 때 작동하지만 JFrame JTextArea로 변환하려고 할 때 뭔가 빠졌습니다 – user2802785

답변

1

시도에서 답을 표시하고 frame.setVisible 전에 createAndShowGUI을 넣어입니다. 메소드가 수행되기 전에 프레임을 보이게 만듭니다. 논리

이 시도 을 : 당신은 txaUserInput에서 논리를 수행하고 txaResults

편집에 표시 할 필요가

// You're doing this 
output = txaResults.getText(); 

// but I think you want this 
input = txaUserInput.getText(); 

String output = ""; 

// Your logic here 
... 
... 

txaResults.setText(output); 

:

나는이 방법으로 문제가있을 수 있습니다 생각
 int[] counts = new int[26]; 
     for (short i = 0; i < (input).length(); i++) 

     { 
       char temp = Character.toLowerCase((input).charAt(i)); 
       if (temp >= 'a' && temp <= 'z') 
        counts[temp - 'a']++; 
     } 


     for (short i = 0; i < counts.length; i++) 
     { 
       output += (char) ('a' + i) + ":\t " + counts[i] + "\n"; 
     } 

     int count = 0; 
     for (short i = 0; i < (input).length(); i++) 
     { 
       if ((input).charAt(i) == 'a' || (input).charAt(i) == 'A') 
        count++; 
     } 

     output += "" + count; 
     txaResults.setText(output); 
+0

감사합니다. 그것은 좋은 캐치였다. 불행히도 출력은 여전히 ​​표시되지 않습니다 – user2802785

+0

내 편집을 확인하십시오 .. –

+0

내 대답이 업데이트되었습니다. –

0

사용 gettext() 텍스트를 얻을 수 있습니다. 그런 다음 텍스트에 단어를 반복하면됩니다.

HashMap<String,Integer>을 사용할 수 있습니다. 여기서 String은 단어이고 Integer은 빈도입니다. 텍스트를 가져올 때 단어로 분해하려면 split()을 사용하십시오. 그런 다음 반복하여 각 단어를지도에 추가하십시오.

추가 할 때 먼저 단어가 존재하는지 확인하십시오. 그렇지 않은 경우 추가하고 개수를 1로 설정하십시오. 다음에 단어를 만날 때 카운터를 증가시키고지도에 다시 추가하십시오.

// the horror logic for calculating 
// word frequency ommitted for 
// sanity's sake 

JLabel[] lotOfLabels; 
JFrame outputFrame = new JFrame("Final Answer"); 
Set<String> allMyWords = thatHashMap.keySet(); 
int totalWords = allMyWords.size(); 
int count = 0; 

outputFrame.setLayout(new FlowLayout()); 
lotOfLabels = new JLabel[totalWords]; 
for(String each : allMyWords){ 
    int frequencyOfAWord = allMyWords.get(each); 
    lotOfLabels[count] = new JLabel(each + " " + frequencyofAWord); 
    outputFrame.getContentPane().add(lotsOfLabels[count]); 
    count++; 
} 

outputFrame.pack(); 
outputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
outputFrame.setVisible(true); 

위의 코드는 JFrame의

관련 문제