0

对于家庭作业,我的任务是确定句子中每个字母的数量。我已经使用 JOptionPane 成功完成了作业。但我想在 JFrame 中显示。我能够从文本区域输入进行转换,但没有表格可以从字符串转换回文本区域显示。

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);
4

2 回答 2

1

尝试createAndShowGUIframe.setVisible. 在您的方法可以执行之前,您正在使框架可见。

我认为这可能是你的问题:

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

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

String output = "";

// Your logic here
...
...

txaResults.setText(output);

您需要从 执行逻辑txaUserInput并将其显示在txaResults

编辑: 试试这个你的逻辑

       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);
于 2013-10-15T16:48:32.693 回答
0

用于gettext()获取文本。然后简单地循环文本以查找单词。

您可以使用HashMap<String,Integer>whereString是单词并且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 中显示答案

于 2013-10-15T16:20:31.000 回答