用于计算所需最小硬币数量的 GUI

GUI for calculating the minimum amount of coins needed

我是 GUI 构建的新手,对下面的代码有点困惑...当我 运行 程序时,它肯定 运行s 但是当你输入变化量时,它不计算多少 25 美分、10 美分等。它只是输入一个“0”。我查看了我的代码,没有任何错误。

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class MinCoinsGUI extends JFrame
{

    private JTextField changeTF = new JTextField(3);
    private JTextField quartersTF = new JTextField(3);
    private JTextField dimesTF = new JTextField(3);
    private JTextField nickelsTF = new JTextField(3);
    private JTextField penniesTF = new JTextField(3);

    public MinCoinsGUI()
    {
        JButton CalcChangeBTN = new JButton("Calculate");
        JButton ClearBTN = new JButton("Clear");

        CalcChangeBTN.addActionListener(new ChangeBTNListener());
        ClearBTN.addActionListener(new ClearBTNListener());

        quartersTF.setEditable(false);
        dimesTF.setEditable(false);
        nickelsTF.setEditable(false);
        penniesTF.setEditable(false);

        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new GridLayout(6, 2, 2, 2));

        mainPanel.add(new JLabel("Enter Change (1-99)"));
        mainPanel.add(changeTF);

        mainPanel.add(new JLabel("Quarters"));
        mainPanel.add(quartersTF);

        mainPanel.add(new JLabel("Dimes"));
        mainPanel.add(dimesTF);

        mainPanel.add(new JLabel("Nickels"));
        mainPanel.add(nickelsTF);

        mainPanel.add(new JLabel("Pennies"));
        mainPanel.add(penniesTF);

        mainPanel.add(CalcChangeBTN);
        mainPanel.add(ClearBTN);

        setContentPane(mainPanel);
        pack();
        setTitle("Minimum Coins");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }

    class ChangeBTNListener implements ActionListener
    {

        public void actionPerformed(ActionEvent e)
        {
            String changeString = changeTF.getText();
            int change = Integer.parseInt(changeString);

            String quartersString = changeTF.getText();
            int quarters = Integer.parseInt(quartersString);

            String dimesString = changeTF.getText();
            int dimes = Integer.parseInt(dimesString);

            String nickelsString = changeTF.getText();
            int nickels = Integer.parseInt(nickelsString);

            String penniesString = changeTF.getText();
            int pennies = Integer.parseInt(penniesString);

            while (change >= 25)
            {
                quarters++;
                change -= 25;
            }

            while (change >= 10)
            {
                dimes++;
                change -= 10;
            }

            while (change >= 5)
            {
                nickels++;
                change -= 5;
            }

            while (change >= 1)
            {
                pennies++;
                change -= 1;
            }

            changeTF.setText("" + change);
        }
    }

    class ClearBTNListener implements ActionListener
    {

        public void actionPerformed(ActionEvent e)
        {
            changeTF.setText("");
        }
    }

    public static void main(String[] args)
    {
        MinCoinsGUI window = new MinCoinsGUI();
        window.setVisible(true);
    }
}

您根本没有在 quartersTF, dimesTF 中设置值等等。您所做的只是计算 25 美分、10 美分等的数量,同时递减 change 直到它达到零,然后将该零设置回 changeTF。如果您想查看 quartersTF, dimesTF 等中的值,则需要设置它们。