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 java.util.*;
import java.util.regex.*;
import java.lang.*;
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;//控制正负
int zz;//题型控制
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];//用户的答案
int[] trueanser=new int[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("\u56DB\u5219\u8FD0\u7B97");
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("\u786E\u8BA4");
vvvv.getContentPane().add(yes);
yes.addActionListener(this); no = new JButton("\u6E05\u7A7A");
no.addActionListener(this);
vvvv.getContentPane().add(no); huan = new JButton("\u6362\u80A4");
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);//随机出运算符的数量
zz=(int)(Math.random()*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);
if(zz==1)num1[j]=(int)(Math.random()*10+1);
}
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="";
if(zz==0)
{
for(int j=0;j<n;j++)
{
//if(num1[j]<0)str=str+"("+String.valueOf(num1[j])+")";
str=str+String.valueOf(num1[j]);
if(j==n-1)
{
//try
//{
//int ii=0;
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(zz==1)
{
trueanser[i-1]=1;
str=String.valueOf(num1[0])+"!=";
for(int j=1;j<=num1[0];j++)
trueanser[i-1]=trueanser[i-1]*j;
//str=str+String.valueOf(trueanser[i-1]);
ck.setText(str1+str);
}
if(i==x+1)
{
b=3;
anser[i-2]=Integer.parseInt(xmt.getText());
}
else i++;
}
if(b==3)
{
y=0;
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("欢迎使用四则运算练习系统\n请输入题目的数量(1-5)");
n=0;
i=1;
b=1;
}
}
public int opt(String str){ String[] operater =new String[20];
String[] number = new String[20];
Stack countStack1 = new Stack();
Stack countStack2 = new Stack();
int result =0;
number = str.split("\\/|\\*|\\+|\\-");
operater= str.split("\\d+");
for(int i = 0; i<number.length;i++)
{
countStack1.push(number[i]);
if(i!=number.length-1)
{
countStack1.push(operater[i+1]);
}
}
while(!countStack1.isEmpty())
countStack2.push(countStack1.pop());
String op;
while(!countStack2.isEmpty())
{
result=0;
op = countStack2.pop().toString();
if(op.equals("*"))
{
result=Integer.parseInt(countStack1.pop().toString())*Integer.parseInt(countStack2.pop().toString());
countStack1.push(result);
continue;
}
if(op.equals("/"))
{
result=Integer.parseInt(countStack1.pop().toString())/Integer.parseInt(countStack2.pop().toString());
countStack1.push(result);
continue;
}
countStack1.push(op);
}
while(!countStack1.isEmpty())
countStack2.push(countStack1.pop());
while(!countStack2.isEmpty())
{
result=0;
op = countStack2.pop().toString();
if(op.equals("+"))
{
result=Integer.parseInt(countStack1.pop().toString())+Integer.parseInt(countStack2.pop().toString());
countStack1.push(result);
continue;
}
if(op.equals("-"))
{
result=Integer.parseInt(countStack1.pop().toString())-Integer.parseInt(countStack2.pop().toString());
countStack1.push(result);
continue;
}
countStack1.push(op);
}
return result;
}
/*public static int opt(int[] num1,int[] nov,int n,int i)
{
if(i>=n)return num1[i];
int sum=0;
if(nov[0]==0 && i<n)
{
sum=num1[i]+opt(num1,nov,n,i+1);
}
if(nov[0]==1 && i<n)
{
sum=num1[i]-opt(num1,nov,n,i+1);
}
if(nov[0]==2 && i<n)
{
sum=num1[i]*opt(num1,nov,n,i+1);
}
if(nov[0]==3 && i<n)
{
sum=num1[i]/opt(num1,nov,n,i+1);
}
return sum;
}*/
}

相比之前的未完成版,这个去掉一些功能简化一下先做一个初版放上来了.

已完成的扩展方向:

A.换肤

B.user选择题目数量

C.阶乘

任务分配:

我负责的是出题以及计算两个部分,界面换肤以及其他功能是同伴莫俊宇负责的,最后两个人一起进行整合以及调试

感想:

  结队作业比起以往我一个人干要效率不少,这样我可以把我不擅长的部分交给队友,两个人各施其职,效率非常高,而且也能互相帮忙解决问题,程序的容错也比以往要好,两个人结队的时候注重的是交流,这样才能融合两个人不同的编码风格,让程序的质量进一步提升

  这一次结队让我受益良多,也让我认识到编程队的重要性,期待与伙伴的下一次合作

开发环境:Eclipse

结对伙伴:201306114408 林达 (http://www.cnblogs.com/SiPine/)

201306114405 莫俊余 (http://www.cnblogs.com/mjysok/)

PS:接下来完善更多扩展功能后会继续上传新的版本~

实验二 四则运算 完成版 ver.1的更多相关文章

  1. 四则运算安卓版ver.mk3

    在原有的基础上做了些许改动以及添加了一点小功能,以下是代码: package com.example.add; import java.io.File; import com.example.add. ...

  2. 四则运算安卓版ver.mk2

    做了一点微小的变动....非常微小...不过美观点了就是...那就是----加背景! 变更后的部分代码: <LinearLayout xmlns:android="http://sch ...

  3. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

  4. 20145225唐振远 实验二 "Java面向对象程序设计"

    20145225<Java程序设计> 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S ...

  5. 四则运算GUI版

    小学四则运算界面版 李永豪 201421123117 郑靖涛 201421123114 coding 地址:https://git.coding.net/ras/work2.git 一.题目描述 我们 ...

  6. 2018-2019-2 实验二 Java面向对象程序设计

    实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验要求 1.没有Linux基础的同学 ...

  7. 2018-2019-2 20175234 实验二《Java面向对象程序设计》实验报告

    目录 实验内容 实验要求 实验步骤 实验收获 参考资料 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 解设计模式 实验 ...

  8. 2016-2017-2 20155324实验二《Java面向对象程序设计》实验报告

    2016-2017-2 20155324实验二<Java面向对象程序设计>实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...

  9. # 20155219实验二 Java面向对象程序设计

    20155219实验二 Java面向对象程序设计 一.实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5 ...

随机推荐

  1. 关于mysql中GROUP_CONCAT函数的使用

    偶然看到公司存储过程中有个字符串拼接的函数,改bug过程中使用到了,还挺有用的,于是记录下来方便记忆,帮助有需要的人. 这是我需要整理的串,他是调用了一个存储过程,传入组织机构的id和迭代层数,返回来 ...

  2. C中级 - 文件辅助操作

    引言 - 业务有点麻烦 C 功能很强大, 同样书写起来会谨慎(拖泥带水). 不妨通过一个小问题来描述裹脚的 C 需求: 用 C 创建一个文件! 难点在于 1. 文件路径切割成 目录 + 文件名 2. ...

  3. ~ManancherQwQ

    例题传送门 好久没写博客了,写一发. 之前学的Manacher算法拿到模板题找到那最后一个点的错误了,TMD没开long long. Manachar算法主要是处理字符串中关于回文串的问题的,它可以在 ...

  4. VS2013在Windows7 64位上变慢的解决方法

    重装了windows7系统,又重装了vs2013,发现在打开vs2013.编译工程及调试的时候,vs2013都会变的比较慢,参考网上资料,这里列出几种可能的解决方法: 1.      打开工具--&g ...

  5. [坑况]——webpack搭建前端环境踩过的坑啊

    前言 嘿哈,webpack搭建前端环境踩过的坑啊! 第一个:完全不知所措 webpack4 下面用不了HtmlWebpackPlugin 和 ExtractTextPlugin 解决方案: html- ...

  6. RegExp正则匹配模式汇总

    正则表达式提供另一种强大的文本搜索和处理方式,对于正则表达式,不同语言有着不同的实现,JavaScript采用的Perl5的语法.对于极少数匹配模式是简单的全字符文本的情况,我们往往会采用indexO ...

  7. systemctl start nginx timeout

    昨儿个研究docker ,搭建私有仓库.想着用nginx代理一下仓库地址.方式使用80端口,于是愉快的下载,编辑,安装nginx.创建nginx.service作为系统启动服务. 结果......,多 ...

  8. Maven仓库 - 分发构件至远程仓库

    分发构件至远程仓库   mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库.本地Maven仓库的构件只能供当前用户使 ...

  9. 【转】Linux - CentOS 7网络配置

    Linux - CentOS 7网络配置 https://blog.csdn.net/J080624/article/details/78083988   安装完VM后,需要进行网络配置.第一个目标为 ...

  10. valgrind使用简介

    1.问题 虽然C/C++是一种非常有用且功能强大的语言,但很难调试. 某些时候可能遇到内存错误. 如果知道出错 ,或者程序一直崩溃,我们可以用gdb/DBX去调试. 但是,有时遇到的问题是由于内存错误 ...