首页 > 其他分享 >2024/10/8日 日志

2024/10/8日 日志

时间:2024-10-09 21:48:43浏览次数:9  
标签:count 10 questionPanel ArrayList 2024 add new 日志 public

在今天我对之前的小测内容进行了更新和对之前的想法进行了实现,改变了界面化的形式。

Count.java

点击查看代码
import java.util.ArrayList;
import java.util.Random;

public class Count {
    ArrayList<Integer> number1=new ArrayList<>();
    ArrayList<Integer> number2=new ArrayList<>();
    ArrayList<Integer> results= new ArrayList<>();
    ArrayList<String> flags=new ArrayList<>();

    public Count() {
        count();
    }

    public void count() {
        Random r=new Random();
        String []flag={"+","-","*","/"};
        int count = 0;
        while(count < 30) {
            int num1= r.nextInt(100);
            int num2= r.nextInt(1,100);

            int flagsIndex=r.nextInt(flag.length);
            String flagtemp=flag[flagsIndex];
            int result;

            switch(flagtemp) {
                case "+":
                    result=num1+num2;
                    break;
                case "-":
                    if(num1 < num2){
                        continue;
                    }
                    result=num1-num2;
                    break;
                case "*":
                    if(num1 * num2 >= 1000){
                        continue;
                    }
                    result=num1*num2;
                    break;
                case "/":
                    if(num1 % num2 != 0){
                        continue;
                    }
                    result=num1/num2;
                    break;
                default:
                    continue;
            }

            number1.add(num1);
            number2.add(num2);
            results.add(result);
            flags.add(flagtemp);
            count++;
        }
    }
    public ArrayList<Integer> getNumber1() {
        return number1;
    }

    public ArrayList<Integer> getNumber2() {
        return number2;
    }

    public ArrayList<Integer> getResults() {
        return results;
    }

    public ArrayList<String> getFlags() {
        return flags;
    }

}

CountJFrame.java

点击查看代码
import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class CountJFrame extends JFrame {
    Count count = new Count();
    JTextField[] inputFields;
    JLabel timerLabel;

    Timer timer;

    int counter = 30;

    int remainingTime = 180; //设置计时器时间;

    public CountJFrame() {
        //界面初始化
        initJFrame();
        //添加题目到界面
        initView();
        //启动计时器
        startTimer();
        //让界面显示
        this.setVisible(true);
    }

    private void initJFrame() {
        //设置界面宽高
        this.setSize(1100, 750);
        //界面标题
        this.setTitle("四则运算");
        //界面置顶
        this.setAlwaysOnTop(true);
        //界面居中
        this.setLocationRelativeTo(null);
        //设置界面关闭
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //设置布局为null
        this.setLayout(null);
    }

    private void initView() {
        int numQuestions = count.number1.size();//题目数量
        inputFields = new JTextField[numQuestions];//创建输入框数组

        //设置计时器标签
        timerLabel = new JLabel("剩余时间: " + remainingTime + " 秒");
        timerLabel.setBounds(10, 10, 200, 30);
        this.getContentPane().add(timerLabel);
        //题目显示
        JPanel questionPanel = new JPanel();
        questionPanel.setLayout(new GridLayout(5, 6, 10, 10));
        for (int i = 0; i < numQuestions; i++) {
            //创建题目标签
            JLabel questionLabel = new JLabel(count.number1.get(i) + " " + count.flags.get(i)
                    + " " + count.number2.get(i) + " = ?");
            questionLabel.setBorder(new BevelBorder(BevelBorder.LOWERED));
            questionPanel.add(questionLabel);
            //输入框创建
            inputFields[i] = new JTextField();
            questionPanel.add(inputFields[i]);
        }
        // 将问题面板添加到主界面
        questionPanel.setBounds(10, 50, 1060, 600); // 设置面板位置和大小
        this.getContentPane().add(questionPanel);

        //提交按钮添加
        JButton submitButton = new JButton("提交");
        submitButton.setBounds(900,650 , 100, 50);
        submitButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                StringBuilder incorrectAnswers = new StringBuilder();
                boolean allCorrect = true;

                for (int i = 0; i < inputFields.length; i++) {
                    String userInput = inputFields[i].getText();
                    //检查用户输入与正确答案是否相等
                    if (!userInput.equals(String.valueOf(count.results.get(i)))) {
                        counter--;
                        incorrectAnswers.append(count.number1.get(i))
                                .append(" ").append(count.flags.get(i))
                                .append(" ").append(count.number2.get(i))
                                .append(" = ? (正确答案为: ")
                                .append(count.results.get(i)).append(")\n");

                        allCorrect = false;
                    }
                }
                // 创建一个JDialog作为父窗口
                JDialog dialog = new JDialog(CountJFrame.this, "结果", true);
                dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
                dialog.setLocationRelativeTo(CountJFrame.this); // 居中于主窗口

                if (allCorrect) {
                    JOptionPane.showMessageDialog(dialog, "所有答案正确!");
                } else {
                    JOptionPane.showMessageDialog(dialog, "共答对"+counter+"个题目,有答案不正确,请查看:\n"
                            + incorrectAnswers);
                }
                counter = 30;
                timer.stop();//计时器停止;
            }
        });
        this.getContentPane().add(submitButton);
    }

    //启动计时器
    private void startTimer(){

        timer = new Timer(1000,new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                remainingTime--;
                timerLabel.setText("剩余时间: "+remainingTime + "秒");
                if(remainingTime <= 0){
                    timer.stop();
                    //超时自动判断
                    JOptionPane.showMessageDialog(null,"时间到,请提交答案!");
                    StringBuilder incorrectAnswers = new StringBuilder();
                    boolean allCorrect = true;
                    for (int i = 0; i < inputFields.length; i++) {
                        String userInput = inputFields[i].getText();
                        //检查用户输入与正确答案是否相等
                        if (!userInput.equals(String.valueOf(count.results.get(i)))) {
                            incorrectAnswers.append(count.number1.get(i))
                                    .append(" ").append(count.flags.get(i))
                                    .append(" ").append(count.number2.get(i))
                                    .append(" = ? (正确答案为: ")
                                    .append(count.results.get(i)).append(")\n");
                            allCorrect = false;
                        }
                    }
                    if (allCorrect) {
                        JOptionPane.showMessageDialog(null, "所以答案正确!");
                    } else {
                        JOptionPane.showMessageDialog(null, "有错误,请比对答案!");
                    }
                }
            }
        });
        timer.start();
    }

}

Main.java

点击查看代码
public class Main {
    public static void main(String[] args) {
        //界面
        new CountJFrame();

    }
}

较大的差别在于
// 将问题面板添加到主界面
questionPanel.setBounds(10, 50, 1060, 600); // 设置面板位置和大小
this.getContentPane().add(questionPanel);
以及
//题目显示
JPanel questionPanel = new JPanel();
questionPanel.setLayout(new GridLayout(5, 6, 10, 10));

通过更改网格结构将主界面格式修改来使达到6*5的形式。

标签:count,10,questionPanel,ArrayList,2024,add,new,日志,public
From: https://www.cnblogs.com/MoonbeamsC/p/18455246

相关文章

  • 2024.10.9训练记录
    下午提高组模拟省流:又被lyy吊打了晚上订正A神秘猜结论题,场上少猜了一点挂了\(18\)分,遗憾。结论:\(ans\in[0,3]\)\(0/1\)可以直接判。\(1\)的情况就是存在一个前缀\(a_{1,i}\)满足出现的数是\(1\)到\(i\)。\(3\)的情况仅当\(a_1=n\)且\(a_n=1\)。场上......
  • 中国移动宽带 IPv6 连接到公网,家庭宽带设置服务器(2024年10月)
    摘要:1、中国移动的宽带,已经支持IPv6,需要宽带光猫上做好设置。2、需要从中国移动的服务器上获取公网IPv6地址。 操作:1、确保宽带WAN连接的前缀获取方式:PrefixDelegation网关的默认登录用户名(user)、密码,在设备的背面有写着。 如果不是,就联系客服,询问宽带终端的超级......
  • 10/9
    include<stdio.h>include<malloc.h>//定义typedefstruct{inttop[2],bot[2];int*V;intm;}DblStack;/*初始化:为栈空间分配一个大小为m的数组空间。0号栈的栈顶指针和栈底指针的初始值都是-1;1号栈的栈顶指针和栈底指针的初始值都是m。表示栈空。*/intInitStack......
  • 20222303 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容在本周的学习中,重新回顾了栈和堆的概念,还学习了安全漏洞的相关概念,然后聚焦在其中的缓冲区溢出漏洞上,明白了缓冲区溢出的定义及发生的原理,并了解了缓冲区溢出发展历史上的一些经典攻击案例,收获颇丰。在本次的实验中,我掌握了反汇编与十六进制编程器相关知识,同时对NOP,......
  • 2024诺贝尔物理学奖,为什么颁给了人工智能
    瑞典皇家科学院当地时间10月8日宣布,将2024年诺贝尔物理学奖授予约翰·J·霍普菲尔德和杰弗里·E·辛顿,表彰他们在使用人工神经网络进行机器学习的基础性发现和发明。两位获奖者从20世纪80年代起就开展了与物理学相关的人工神经网络的重要工作。这让很多网友“满头问号”。诺贝尔......
  • .NET周刊【9月第4期 2024-09-22】
    国内文章.NET常见的几种项目架构模式,你知道几种?(附带使用情况投票)https://www.cnblogs.com/Can-daydayup/p/18421685文章介绍了软件项目的几种架构模式,包括三层架构、MVC、DDD、整洁架构和CQRS。这些模式通过分层职责,分别处理表示、业务逻辑和数据访问等功能,强调系统的可维护性......
  • 鲲鹏(arm64)+麒麟V10离线部署KubeSphere3.4.1(精简版 离线包Windows制作)
    前提条件Windows上安装DockerDesktop+WSL。麒麟V10k8s系统初始化的依赖已下载(若没下载过,可参考上篇至鲲鹏麒麟服务器下载或Windows手动下载)Windows手动下载,地址:https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/aarch64/Packages/开始制作2.......
  • 2024.10.09 力扣刷题 盛水最多的容器
    题目:这边是参考了B站UP主的思路进行了解答,采用双下标访问的方式进行。如果要水最多的话,一定是高的那端找低的那端,然后算出面积。如果是低的那端找高的那端,那本身下限就在自己身上,所以不从低的端固定不变。附上代码:intmaxArea(std::vector<int>&height){ if(height.empty......
  • [20241006]跟踪library cache lock library cache pin使用gdb(补充测试3).txt
    [20241006]跟踪librarycachelocklibrarycachepin使用gdb(补充测试3).txt--//补充测试产生光标已经缓存的情况下,生成新子光标的调用librarycachelocklibrarycachepin的情况。1.环境:SCOTT@book01p>@ver2==============================PORT_STRING          ......
  • [20241009]oracle timestamp with time zone数据类型的存储.txt
    [20241009]oracletimestampwithtimezone数据类型的存储.txt--//放假前遇到的问题,开发在表中定义了几个timestampwithtimezone的数据类型,及时更正对方的错误,完全没有使用这样的数据--//类型。类似的问题我以前就遇到,比如全部应用程序的表凡是varchar2数据类型都被定义为nvar......