Tangerine_Orange 2024-08-10 01:44 采纳率: 100%
浏览 31
已结题

使用Java语言,设计一个程序,实现求取两个正整数的最大公约数。

使用Java语言,设计一个程序,实现求取两个正整数的最大公约数。要求:在窗口中有三个文本框和两个按钮。第一个按钮,上的文字为“最大公约数”;第二个按钮上的文字为“关闭”。当单击按钮“最大公约数”时,能够把前两个文本框中正整数的最大公约数存放在第三个文本框中。单击按钮“关闭”,则程序结束。
目前只找到了直接在控制台输出结果的java代码,不会做成窗口展示出来。希望有朋友帮帮忙,可以在此基础上优化或者直接重新写,有打赏的,十分感谢!

img

  • 写回答

5条回答 默认 最新

  • Roc-xb 领域专家: 后端开发技术领域 2024-08-10 02:28
    关注

    运行效果展示:

    img

    程序代码

    package tt;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class GCDApp {
        public static void main(String[] args) {
            // 创建主窗口
            JFrame frame = new JFrame("GCD Calculator");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(400, 200);
            frame.setLayout(new GridBagLayout());
    
            // 创建文本框
            JTextField textField1 = new JTextField(10);
            JTextField textField2 = new JTextField(10);
            JTextField textFieldResult = new JTextField(10);
            textFieldResult.setEditable(false); // 结果框设为不可编辑
    
            // 创建按钮
            JButton gcdButton = new JButton("最大公约数");
            JButton closeButton = new JButton("关闭");
    
            // 创建布局约束
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.insets = new Insets(5, 5, 5, 5); // 设置组件之间的间距
            gbc.fill = GridBagConstraints.HORIZONTAL;
    
            // 添加组件到窗口
            gbc.gridx = 0;
            gbc.gridy = 0;
            frame.add(new JLabel("第一个正整数:"), gbc);
    
            gbc.gridx = 1;
            frame.add(textField1, gbc);
    
            gbc.gridx = 0;
            gbc.gridy = 1;
            frame.add(new JLabel("第二个正整数:"), gbc);
    
            gbc.gridx = 1;
            frame.add(textField2, gbc);
    
            gbc.gridx = 0;
            gbc.gridy = 2;
            frame.add(new JLabel("最大公约数:"), gbc);
    
            gbc.gridx = 1;
            frame.add(textFieldResult, gbc);
    
            gbc.gridx = 0;
            gbc.gridy = 3;
            frame.add(gcdButton, gbc);
    
            gbc.gridx = 1;
            frame.add(closeButton, gbc);
    
            // 添加按钮事件监听器
            gcdButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    try {
                        int num1 = Integer.parseInt(textField1.getText());
                        int num2 = Integer.parseInt(textField2.getText());
    
                        if (num1 <= 0 || num2 <= 0) {
                            JOptionPane.showMessageDialog(frame, "请输入正整数", "错误", JOptionPane.ERROR_MESSAGE);
                            return;
                        }
    
                        int gcd = findGCD(num1, num2);
                        textFieldResult.setText(String.valueOf(gcd));
                    } catch (NumberFormatException ex) {
                        JOptionPane.showMessageDialog(frame, "请输入有效的整数", "错误", JOptionPane.ERROR_MESSAGE);
                    }
                }
            });
    
            closeButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                }
            });
    
            // 显示窗口
            frame.setVisible(true);
        }
    
        // 求两个正整数的最大公约数
        private static int findGCD(int a, int b) {
            while (b != 0) {
                int temp = b;
                b = a % b;
                a = temp;
            }
            return a;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月18日
  • 已采纳回答 8月10日
  • 创建了问题 8月10日