我有一个作业分配来输入一个字符串并输出每个字母的使用数量。当我使用JOptionPane并且我已经完成了作业时,逻辑正在工作。但是,当我尝试“转换”代码以使用JFrame JTextArea输入和输出时,输出不会显示正确的字符数。我确信这在我的逻辑中非常简单,但我没有看到它
以下是输出结果:
这是代码
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.*;
public class Launcher extends JFrame
{
// create panel components
private static JTextArea txaUserInput;
private static JTextArea txaResults;
private static JButton btnSearch;
public static void main(String[] args)
{
JFrame frame = new JFrame("Final Answer");
Border b = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.GRAY);
txaUserInput = new JTextArea();
txaUserInput.setPreferredSize(new Dimension(220, 70));
txaUserInput.setBorder(b);
txaUserInput.setLineWrap(true);
txaResults = new JTextArea("Results");
txaResults.setPreferredSize(new Dimension(200, 500));
txaResults.setBorder(b);
btnSearch = new JButton("Count Occurences of Each Letter");
frame.setLayout(new FlowLayout());
frame.add(txaUserInput);
frame.add(btnSearch);
frame.add(txaResults);
createAndShowGUI();
frame.setSize(300, 700);
frame.setVisible(true);
}
private static void createAndShowGUI()
{
btnSearch.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// create variables
int[] counts = new int[26];
int count = 0;
String input = "";
String output ="";
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";
}
for (short i = 0; i < (input).length(); i++)
{
if ((input).charAt(i) == 'a' || (input).charAt(i) == 'A')
count++;
}
txaResults.setText(output);
}
});
}
}
答案 0 :(得分:4)
因为你的输入字符串是空的!
试试这个:
String input = txaUserInput.getText();
String output ="";
答案 1 :(得分:3)
您的输入字符串设置为“”。
您需要将其设置为您从用户
获得的输入文本答案 2 :(得分:1)
首先,你不需要摆动这么简单的应用程序。
您要求做的是计算输入字符串中的char出现次数。
你应该做的是从所有gui员工中删除你的逻辑。
做那个创建方法
private void countAndPrintCharOccurance(String input) {
int[] character = new int[1 << 8];
char[] charArray = input.toCharArray();
for(int idx = 0; idx < charArray.length; idx++) {
character[Character.toLowerCase(charArray[idx])]++;
}
for(int i ='a'; i <= 'z'; i++) {
System.out.println(((char) i) + " " + character[i]);
}
}
然后你会发现你没有将输入传递给它。