Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环逻辑错误的一种新方法_Java_For Loop_Jframe - Fatal编程技术网

Java 循环逻辑错误的一种新方法

Java 循环逻辑错误的一种新方法,java,for-loop,jframe,Java,For Loop,Jframe,我有一个家庭作业,要输入一个字符串并输出每个字母的数字。当我使用JOptionPane时,逻辑是有效的,我已经交了作业。但是,当我尝试“转换”代码以使用JFrame JTextArea输入和输出时,输出不会显示正确的字符计数。我相信这在我的逻辑中是很简单的,但我看不出来 以下是输出结果: 这是密码 import javax.swing.*; import javax.swing.border.Border; import java.awt.*; import java.awt.event.*;

我有一个家庭作业,要输入一个字符串并输出每个字母的数字。当我使用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);

            }

        });
    }
}
import javax.swing.*;
导入javax.swing.border.border;
导入java.awt.*;
导入java.awt.event.*;
公共类启动器扩展JFrame
{
//创建面板组件
私有静态JTextArea txaUserInput;
私有静态JTextArea TXA结果;
私有静态JButton btnSearch;
公共静态void main(字符串[]args)
{
JFrame=新JFrame(“最终答案”);
Border b=BorderFactory.createMatteBorder(1,1,1,1,Color.GRAY);
txaUserInput=新的JTextArea();
setPreferredSize(新维度(220,70));
txaUserInput.setboorder(b);
txaUserInput.setLineWrap(true);
TXA结果=新的JTextArea(“结果”);
setPreferredSize(新维度(200500));
TXA结果顺序(b);
btnSearch=newjbutton(“统计每个字母的出现次数”);
frame.setLayout(新的FlowLayout());
frame.add(txaUserInput);
frame.add(btnSearch);
frame.add(txasults);
createAndShowGUI();
框架设置尺寸(300700);
frame.setVisible(true);
}
私有静态void createAndShowGUI()
{
addActionListener(新ActionListener()
{
已执行的公共无效操作(操作事件e)
{
//创建变量
int[]计数=新的int[26];
整数计数=0;
字符串输入=”;
字符串输出=”;
对于(短i=0;i<(输入).length();i++)
{
char temp=Character.toLowerCase((输入).charAt(i));

如果(temp>='a'&&temp,因为您的输入字符串为空

试试这个:

String input = txaUserInput.getText();
String output ="";

因为你的输入字符串是空的

试试这个:

String input = txaUserInput.getText();
String output ="";

您的输入字符串设置为“”


您需要将其设置为从用户处获得的输入文本

您的输入字符串设置为“”


您需要将其设置为从用户处获得的输入文本

首先,对于这样简单的应用程序,您不需要swing

您需要做的是计算输入字符串中出现的字符数

您应该做的是从所有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]);
    }

}
private void countAndPrintCharOccurance(字符串输入){

int[]character=newint[1首先,对于这样简单的应用程序,您不需要swing

您需要做的是计算输入字符串中出现的字符数

您应该做的是从所有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]);
    }

}
private void countAndPrintCharOccurance(字符串输入){

int[]字符=新int[1您可以将代码示例减少到您发现的唯一有问题的部分吗?为什么将您的
输入
输出
分配给空字符串?!您不必在
输入
变量周围加括号。您可以将代码示例减少到您发现的唯一有问题的部分吗?为什么您的
输入
output
分配给空字符串?!您不必在
input
变量周围放括号。感谢您的回答。我的自我挑战的一部分是转换为GUI以帮助我了解该过程。但是,我对上面的代码片段有一个问题。您能解释一下
int吗[1这是移位运算符。您将1个八宫二进制
1 0000 0000
的值移位为256。这意味着数组的大小将为256。这意味着我们将涵盖从x0到x100个字符的Unicode字符。感谢您的回答。我的部分自我挑战是转换为GUI以帮助我了解该过程。但是,我对上面的代码片段有疑问。您能解释一下移位运算符
int[1]吗?您可以将8个二进制
1 0000 0000
移位为256。这意味着数组的大小将为256。这意味着我们将涵盖从x0到x100个字符的Unicode字符。