对于家庭作业,我的任务是确定句子中每个字母的数量。我已经使用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);
答案 0 :(得分:1)
尝试将createAndShowGUI
放在frame.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);
答案 1 :(得分: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中显示答案