• 实验二 四则运算 未完成版


    package size;
    
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JMenuBar;
    import javax.swing.JMenu;
    import javax.swing.JMenuItem;
    
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JTextField;
    import javax.swing.JTextArea;
    
    import java.awt.Color;
    
    import javax.swing.JPanel;
    import javax.swing.JLabel;
    import javax.swing.JButton;
    import javax.swing.JScrollPane;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.io.*;
    
    public class vvvv extends JFrame implements ActionListener {
        private static final long serialVersionUID = 1L;
        int x;//题目个数
        int y=0;
        int n;
        int i=1;
        char[] op = { '+', '-', '*', '/' };
        int[] nov = new int[4];
        int zf;//控制正负
        String str = new String();
        String str1 = new String();
        int[] num1 = new int[5];
        String s[] = new String[5];
        int num2=0;
        int[] anser=new int[5];//用户的答案
        float[] trueanser=new float[5];//正确答案
        File file;
        int a = 0;
        int b = 0;
        // int c = 0;
        public JFrame vvvv;
        JTextArea ck;
        private JTextField xmt;
        private JButton yes;
        private JButton no;
        private JButton start;
        private JButton huan;
        private JPanel panel;
        private JScrollPane scrollPane;
    
        /**
         * Launch the application.
         */
        public static void main(String[] args)// 主方法
        {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        vvvv window = new vvvv();
                        window.vvvv.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    
        /**
         * Create the application.
         */
        public vvvv() {
            initialize();
        }
    
        /**
         * Initialize the contents of the frame.
         */
        private void initialize() {
            vvvv = new JFrame();
            vvvv.getContentPane().setEnabled(false);
            vvvv.getContentPane().setBackground(Color.GRAY);
            vvvv.setTitle("u56DBu5219u8FD0u7B97");
            vvvv.setBounds(100, 100, 494, 270);
            vvvv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            vvvv.setResizable(false);
    
            vvvv.getContentPane()
                    .setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
    
            panel = new JPanel();
            vvvv.getContentPane().add(panel);
    
            ck = new JTextArea(10, 40);
            // panel.add(ck);
            // ck.setEditable(false);
    
            scrollPane = new JScrollPane(ck);
            panel.add(scrollPane);
    
            xmt = new JTextField();
            vvvv.getContentPane().add(xmt);
            xmt.addActionListener(this);
            xmt.setColumns(10);
    
            yes = new JButton("u786Eu8BA4");
            vvvv.getContentPane().add(yes);
            yes.addActionListener(this);
    
            no = new JButton("u6E05u7A7A");
            no.addActionListener(this);
            vvvv.getContentPane().add(no);
    
            huan = new JButton("u6362u80A4");
            huan.addActionListener(this);
            vvvv.getContentPane().add(huan);
            
            start = new JButton("开始");
            start.addActionListener(this);
            vvvv.getContentPane().add(start);
        }
        public void actionPerformed(ActionEvent e) {
            if (e.getSource() == yes)
            {
                if(b==1)
                {
                    if(xmt.getText().length()!=0)
                    try
                    {
                        x=Integer.parseInt(xmt.getText());
                        b++;
                    }
                    catch(NumberFormatException x)
                    {
                        ck.setText("输入有误!");
                    }
                    else ck.setText("输入有误!");
                }
                if(b==2)
                {
                    if(n!=0)anser[i-2]=Integer.parseInt(xmt.getText());
                    str1="第"+i+"条题目为:";
                    n = (int) (Math.random() * 4 + 2);//随机出运算符的数量
                    for (int j = 0; j < n; j++)
                    {
                        zf = (int) (Math.random() * 2);
                        if (zf == 0)//
                            num1[j] = -(int) (Math.random() * 100);//产生随机数
                        else        //
                            num1[j] = (int) (Math.random() * 100);
                    }
                    for (int k = 0; k < n - 1; k++)
                    {
                        nov[k]=(int)(Math.random()*4);
                        if(nov[k]==3&&num1[k+1]==0)
                        {
                            do
                            {
                                num1[k + 1]=(int)(Math.random()*100);
                            }while(num1[k + 1]==0);
                        }
                    }
                    str="";
                    for(int j=0;j<n;j++)
                    {
                        if(num1[j]<0)str=str+"("+String.valueOf(num1[j])+")";
                        else str=str+String.valueOf(num1[j]);
                        if(j==n-1)
                        {
                            try
                            {
                                trueanser[i-1]=opt(str);
                            }
                            catch (Exception e1)
                            {
                                System.out.println(e1);
                                //e1.printStackTrace();
                            }
                            str=str+"=";
                            //str=str+String.valueOf(trueanser[i-1]);
                            ck.setText(str1+str);
                            break;
                        }
                        str=str+op[nov[j]];
                    }
                    if(i==x+1)
                    {
                        b=3;
                        anser[i-2]=Integer.parseInt(xmt.getText());
                    }
                    else i++;
                }
                if(b==3)
                {
                    for(int j=0;j<x;j++)
                    {
                        if(anser[j]==(int)trueanser[j])y++;
                    }
                    ck.setText("答题完成!答对"+y+"道!");
                    b=0;
                }
            }
            if (e.getSource() == no)
            {
                xmt.setText(null);
            }
            if (e.getSource() == huan)
            {
                if (a == 0) {
                    vvvv.getContentPane().setBackground(Color.blue);
                    a++;
                }
                else if (a == 1) {
                    vvvv.getContentPane().setBackground(Color.yellow);
                    a++;
                }
                else if (a == 2) {
                    vvvv.getContentPane().setBackground(Color.gray);
                    a = 0;
                }
            }
            if (e.getSource() == start)
            {
                ck.setText("欢迎使用四则运算练习系统
    请输入题目的数量(1-5)");
                n=0;
                i=1;
                b=1;
            }
        }
        public static float opt(String s) throws Exception{
            if(s == null || "".equals(s.trim()))
            {
                return 0f;
            }
            int a1=s.indexOf("+");
            int a2=s.indexOf("-");
            int a3=s.indexOf("*");
            int a4=s.indexOf("/");
            int a5=s.indexOf("(");
            if(a1==-1&&a2==-1&&a3==-1&&a4==-1)
            {
                if(s.trim()==null||"".equals(s.trim()))
                {
                    throw new Exception("operate error");
                }
                return Float.parseFloat(s.trim());
            }
            if(a5!=-1)
            {
                int a6=s.indexOf(")");
                if(a6==-1)
                {
                    throw new Exception("括号不匹配");
                }
                else
                {
                    float f=opt(s.substring(a5+1,a6).trim());
                    s=s.replace(s.substring(a5,a6+1), String.valueOf(f));
                    return opt(s);
                }
            }
            if(a1!=-1)
            {
                return opt(s.substring(0,a1))+opt(s.substring(a1+1,s.length()));
            }
            if(a2!=-1)
            {
                return opt(s.substring(0,a2))-opt(s.substring(a2+1,s.length()));
            }
            if(a3!=-1)
            {
                return opt(s.substring(0,a3))*opt(s.substring(a3+1,s.length()));
            }
            if(a4!=-1)
            {
                return opt(s.substring(0,a4))/opt(s.substring(a4+1,s.length()));
            }
            return Integer.parseInt(s.trim());
        }
    }

    实验并未完成,主要问题出在最后计算答案的时候,近期调试完后便把完成版发上来,现在先发未完成版,我的总结到时候也跟完成版一起上交....

    PS:会出现这种情况完全是我自己太懒没有抓紧做...结果就变成这样了...真是十分抱歉(;´Д`)

    PS2:同行的结对人是05莫俊余

    PSP:(゚Д゚≡゚Д゚)老师手下留情!

  • 相关阅读:
    第六章 编译并运行程序
    第五章 顺序型编程进阶
    第四章 异常
    第三章 顺序型编程
    TCP和UDP的区别和优缺点
    Java UDP Socket编程
    springboot 学习资源推荐
    springboot集成redis
    微信公众号的SpringBoot+Quartz的定时任务Demo
    远程桌面发生身份验证错误,要求的函数不受支持【WIN10家庭】或【专业版】--解决办法
  • 原文地址:https://www.cnblogs.com/SiPine/p/4410696.html
Copyright © 2020-2023  润新知