6-47选择整数计算

news2024/11/24 2:46:36

整数计算:
*在这里插入图片描述*
用swing组件来实现整数计算,需要对整数计算的值进行校验。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class IntegerCalculator extends JFrame implements ActionListener {
    private JCheckBox[] checkBoxes;
    private JTextField[] textFields;
    private JButton selectAllButton;
    private JButton multiSelectButton;
    private JButton sumButton;
    private JTextField sumDisplayField;

    public IntegerCalculator(int numIntegers) {
        setTitle("选择整数计算");
        setSize(600, 400);
        this.setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(numIntegers + 3, 2));

        checkBoxes = new JCheckBox[numIntegers];
        textFields = new JTextField[numIntegers];
        for (int i = 0; i < numIntegers; i++) {
            checkBoxes[i] = new JCheckBox();
            textFields[i] = new JTextField();
            panel.add(checkBoxes[i]);
            panel.add(textFields[i]);
        }

        this.selectAllButton = new JButton("全选");
        panel.add(selectAllButton);
        this.selectAllButton.addActionListener(this);

        this.multiSelectButton = new JButton("多项选择");
        panel.add(multiSelectButton);
        this.multiSelectButton.addActionListener(this);

        this.sumButton = new JButton("求和");
        panel.add(sumButton);
        this.sumButton.addActionListener(this);

        sumDisplayField = new JTextField();
        sumDisplayField.setEditable(false);

        panel.add(sumDisplayField);

        add(panel);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == this.selectAllButton) {
            for (JCheckBox checkBox : checkBoxes) {
                checkBox.setSelected(true);
            }
        } else if (event.getSource() == this.multiSelectButton) {
            int[] selectedIntegers = new int[checkBoxes.length];
            int count = 0;
            for (int i = 0; i < checkBoxes.length; i++) {
                if (checkBoxes[i].isSelected()) {
                    String text = textFields[i].getText();
                    if (!text.isEmpty()) {
                        try {
                            selectedIntegers[count++] = Integer.parseInt(text);
                        } catch (NumberFormatException ex) {
                            JOptionPane.showMessageDialog(null, text + "不能转换成数字,忽略");
                            return;
                        }
                    }
                }
            }
            int[] validSelectedIntegers = new int[count];
            for (int i = 0; i < count; i++) {
                validSelectedIntegers[i] = selectedIntegers[i];
            }
            if (count > 0) {
                String displayText = "[";
                for (int i = 0; i < count; i++) {
                    displayText += validSelectedIntegers[i];
                    if (i < count - 1) {
                        displayText += ", ";
                    }
                }
                displayText += "]";
                JOptionPane.showMessageDialog(null, "选择整数:" + displayText);
            }
        } else if (event.getSource() == this.sumButton) {
            int sum = sum(textFields);
            if (sum != 0) {
                sumDisplayField.setText(String.valueOf(sum));
            } else {
                sumDisplayField.setText("0");
            }
        }
    }

    public int sum(JTextField[] text) {
        int sum = 0;
        for (int i = 0; i < text.length; i++) {
            String textArea = text[i].getText();
            if (!textArea.isEmpty() && checkBoxes[i].isSelected()) {
                try {
                    int x = Integer.parseInt(textArea);
                    sum += x;
                } catch (Exception e) {
                    String str = textArea + "不能被转换成数字,忽略";
                    JOptionPane.showMessageDialog(null, str);
                    return 0;
                }
            }
        }
        return sum;
    }

    public static void main(String[] args) {
        IntegerCalculator calculator = new IntegerCalculator(6);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1862426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Docker】安装和加速

目录 1.安装 2.了解 docker 信息 3.查询状态 4. 重新启动Docker 1.安装 yum install –y docker 2.了解 docker 信息 cat /etc/redhat-release 3.查询状态 systemctl status docker 4.支持 1.12 的 docker 镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docke…

照片放大工具Topaz Gigapixel AI for Mac v7.1.2

Topaz Gigapixel AI软件是一款相当高效的PC端图像大小调整工具&#xff0c;更是一款能够为摄影师、设计师以及图像处理爱好者带来革命性体验的强大软件。它凭借先进的深度学习技术&#xff0c;打破了传统图像大小调整的限制&#xff0c;实现了真正意义上的无损放大和图像恢复。…

Matlab|【防骗帖】考虑时空相关性的风电功率预测误差建模与分析

目录 1 主要内容 2 部分程序 3 下载链接 1 主要内容 这个程序《考虑时空相关性的风电功率预测误差建模与分析》画的图片非常漂亮&#xff0c;和原文献基本一致&#xff0c;但是实际上内容并未实现出来&#xff0c;主要就是利用现有的风电预测的数据和结果做了相关的图&#…

CSS|01 CSS简介CSS的3种书写方式注释

CSS简介 什么是CSS CSS&#xff08;Cascading Style Sheet&#xff09;&#xff0c;层叠样式表 或者 级联样式表&#xff0c;简称样式表。CSS的作用 主要用来给 HTML网页 设置外观或者样式。CSS的语法规则 h1 {属性:属性值}注意&#xff1a;1. CSS代码是由选择器和一对括号…

虚拟机装入kali linux

VMware 首先需要先安装VMware Workstation Pro可以根据这篇文章来下载VMware 下载kali linux Installer Images VS Virtual Machines Installer Images&#xff08;安装镜像&#xff09;Virtual Machines&#xff08;虚拟机&#xff09; 直接访问硬件&#xff0c;定制内核…

JupyterLab使用指南(七):JupyterLab使用 LaTeX 生成数学公式

在 JupyterLab 中&#xff0c;可以使用 LaTeX 语法生成复杂的数学公式。JupyterLab 内置对 LaTeX 的支持&#xff0c;使得我们可以方便地在 notebook 中编写和展示数学公式。以下是详细的步骤和示例。 1. 使用 LaTeX 生成数学公式 LaTeX 是一种专门用于排版数学公式的语言。J…

springboot+vue+mybatis门窗管理系统+PPT+论文+讲解+售后

如今社会上各行各业&#xff0c;都在用属于自己专用的软件来进行工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。互联网的发展&#xff0c;离不开一些新的技术&#xff0c;而新技术的产生往往是为了解决现有问题而产生的。针对于仓库信息管理方…

如何使用 Swift 中的 GraphQL

文章目录 前言基础知识ApolloGraphQL结论前言 我一直在分享关于类型安全和在 Swift 中构建健壮 API 的更多内容。今天,我想继续探讨类型安全的话题,介绍 GraphQL。GraphQL 是一种用于 API 的查询语言。本周,我们将讨论 GraphQL 的好处,并学习如何在 Swift 中使用它。 基础…

CVPR讲座总结(二)-探索图像生成基础模型的最新进展探索多模态代理的最新进展:从视频理解到可操作代理

引言 在CVPR24上的教程中&#xff0c;微软高级研究员Linjie Li为我们带来了多模态代理的深入探索。这些代理通过整合多模态专家和大语言模型&#xff08;LLM&#xff09;来增强感知、理解和生成能力。本文总结了Linjie Li的讲座内容&#xff0c;重点介绍了多模态记忆、可操作代…

考研数学|张宇和武忠祥,强化能不能同时跟?

可以说你跟武老师学明白了&#xff0c;120完全没问题&#xff01;如果追求更高&#xff0c;宇哥的怀抱也想你敞开&#xff01; 学长我21年一战数学83&#xff0c;总分没过线&#xff0c;22年二战143&#xff0c;逆袭上岸211&#xff01;市面上的老师我基本都听过&#xff0c;最…

进阶篇07——InnoDB引擎介绍

概览 逻辑存储结构 架构 当执行增删改查操作时&#xff0c;操作的是缓冲区的数据&#xff0c;如果缓冲区里没有要操作的数据&#xff0c;就会从磁盘中读取数据加载到缓冲区中&#xff1b;缓冲区的数据会以一定的频率通过后台线程刷新到磁盘中永久存储。 内存结构 磁盘结构 后…

H5、Vue3、UniApp实现抖音短视频功能

H5、Vue3、UniApp实现抖音短视频功能 ml-swiper https://ext.dcloud.net.cn/plugin?id18973 可 0 配置&#xff0c;高性能、低代码、全端兼容 APP端效果图 微信小程序端效果图 Vue网页端效果图 ml-swiper 可 0 配置&#xff0c;高性能、低代码、全端兼容 APP端效果图 …

基于Spring Boot+VUE职称评审管理系统

1管理员功能模块 管理员登录&#xff0c;通过填写注册时输入的用户名、密码、角色进行登录&#xff0c;如图1所示。 图1管理员登录界面图 管理员登录进入职称评审管理系统可以查看首页、个人中心、用户管理、评审员管理、省份管理、评审条件管理、职称申请管理、结果公布管理、…

昇思25天学习打卡营第2天|onereal》

今天学习内容是了解华为昇思平台。虽然打了卡&#xff0c;但是我的jupyter里面并没有播放按钮&#xff0c;所以还是无法运行代码。反映给昇思吴彦祖小哥了&#xff0c;他说需要专家帮我解决。 我还是要自我表扬一下&#xff0c;不懂就问&#xff0c;切莫不懂装懂&#xff0c;那…

【Linux】常用基本命令

wget网址用于直接从网上下载某个文件到服务器&#xff0c;当然也可以直接从网上先把东西下到本地然后用filezilla这个软件来传输到服务器上。 当遇到不会的命令时候&#xff0c;可以使用man “不会的命令”来查看这个命令的详细信息。比如我想要看看ls这个命令的详细用法&…

Opencv学习项目6——pyzbar

在之前我们学习了解码图片中的二维码&#xff0c;这次我们开启摄像头来解码视频中二维码 开启摄像头 # 打开摄像头 cap cv2.VideoCapture(0) cap.set(3, 640) # 设置摄像头画面宽度 cap.set(4, 480) # 设置摄像头画面高度 我使用的是笔记本上的摄像头来进行的&#xff0c;…

数据结构(Java):顺序表集合类ArrayList

1、线性表 线性表&#xff0c;在逻辑结构上是连续的&#xff08;可理解为连续的一条直线&#xff0c;一对一的关系&#xff09;&#xff0c;而在物理结构上不一定连续&#xff0c;通常以数组和链式结构进行存储。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线…

【最佳实践】 使用react写一个sliderbar 侧滑导航组件

大家好&#xff0c;我是DX3906 我们现在使用React 来实现一个侧边导航组件&#xff08;sidebar&#xff09;&#xff0c;你可以使用 CSS 和 React 的状态管理来实现。下面是一个简单的示例&#xff0c;展示如何创建一个基本的侧边导航组件&#xff1a; 1. 安装依赖&#xff1a;…

浅谈逻辑控制器之Include控制器

浅谈逻辑控制器之Include控制器 “Include控制器”是一个特别实用的功能&#xff0c;它允许用户将一个或多个测试片段&#xff08;通常是请求&#xff09;包含到不同的测试计划或模块中&#xff0c;从而实现代码的复用和测试结构的优化。本文档将详细介绍JMeter中的Include控制…

并发编程-02深入理解Java线程

一 线程基础知识 1.1 理解线程和进程 进程和线程的概念: 进程: 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至CPU&#xff0c;数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指…