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 com.ibm.icu.text.DecimalFormat; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
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;
File File;
int x;//题目个数
int y=;
int n;
int i=;
char[] op = { '+', '-', '*', '/' };
int[] nov = new int[];
int zf;//控制正负
int zz;//题型控制
String str = new String();
String str1 = new String();
int[] num1 = new int[];
String s[] = new String[];
int num2=;
float[] anser=new float[];//用户的答案
float[] trueanser=new float[];//正确答案
File file;
int a=;
int b=;
int bb=;
// int c = 0;
opt opt=new opt();;
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(, , , );
vvvv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
vvvv.setResizable(false); vvvv.getContentPane()
.setLayout(new FlowLayout(FlowLayout.CENTER, , )); panel = new JPanel();
vvvv.getContentPane().add(panel); ck = new JTextArea(, );
// 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(); 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);
try
{
String b="";
file =new File("name.txt");
FileReader fr = new FileReader(file.getName());
BufferedReader br = new BufferedReader(fr);
b=br.readLine();
fr.close();
ck.setText("你好!"+b);
bb=;
}
catch(FileNotFoundException x)
{
ck.setText("你是第一次使用该程序!请输入您的名称!");
bb=;
}
catch(IOException x)
{
x.printStackTrace();
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == yes)
{
if(bb==)
{
try
{
file =new File("name.txt");
if(!file.exists())
{
file.createNewFile();
}
FileWriter fileWritter = new FileWriter(file.getName());
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.write(xmt.getText());
bufferWritter.close();
ck.setText("保存成功!");
bb=;
}
catch(IOException x)
{
x.printStackTrace();
}
}
if(b==)
{
if(xmt.getText().length()!=)
try
{
x=Integer.parseInt(xmt.getText());
b++;
}
catch(NumberFormatException x)
{
ck.setText("输入有误!");
}
else ck.setText("输入有误!");
}
if(b==)
{
if(n!=)anser[i-]=Float.parseFloat(xmt.getText());
str1="第"+i+"条题目为:";
n=(int)(Math.random() * + );//随机出运算符的数量
zz=(int)(Math.random()*);
for(int j=;j<n;j++)
{
//zf=(int)(Math.random()*2);
//if(zf==0)//负
// num1[j]=-(int)(Math.random()*100);//产生随机数
//else //正
num1[j]=(int)(Math.random()*);
if(zz==)num1[j]=(int)(Math.random()*+);
}
for(int k=;k<n-;k++)
{
nov[k]=(int)(Math.random()*);
if(nov[k]==&&num1[k+]==)
{
do
{
num1[k+]=(int)(Math.random()*);
}while(num1[k+]==);
}
}
str="";
if(zz==)
{
for(int j=;j<n;j++)
{
//if(num1[j]<0)str=str+"("+String.valueOf(num1[j])+")";
str=str+String.valueOf(num1[j]);
if(j==n-)
{
//try
//{
//int ii=0;
try{
trueanser[i-]=opt.Math(str);
DecimalFormat df = new DecimalFormat("#.00");
trueanser[i-]=Float.parseFloat(df.format(trueanser[i-]));
} catch (Exception e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
//}
/*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==)
{
trueanser[i-]=;
str=String.valueOf(num1[])+"!=";
for(int j=;j<=num1[];j++)
trueanser[i-]=trueanser[i-]*j;
//str=str+String.valueOf(trueanser[i-1]);
ck.setText(str1+str);
}
if(i==x+)
{
b=;
anser[i-]=Float.parseFloat(xmt.getText());
}
else i++;
}
if(b==)
{
y=;
for(int j=;j<x;j++)
{
if(anser[j]==trueanser[j])y++;
}
ck.setText("答题完成!答对"+y+"道!");
b=;
}
}
if (e.getSource() == no)
{
xmt.setText(null);
}
if (e.getSource() == huan)
{
if (a == ) {
vvvv.getContentPane().setBackground(Color.blue);
a++;
}
else if (a == ) {
vvvv.getContentPane().setBackground(Color.yellow);
a++;
}
else if (a == ) {
vvvv.getContentPane().setBackground(Color.gray);
a = ;
}
}
if (e.getSource() == start && bb==)
{
ck.setText("欢迎使用四则运算练习系统\n请输入题目的数量(1-5)");
n=;
i=;
b=;
}
}
/*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;
}*/
}

vvvv

package size;
import java.util.Stack;
public class opt
{
public float Math(String str) throws Exception
{
String[] operater =new String[];
String[] number = new String[];
Stack countStack1 = new Stack();
Stack countStack2 = new Stack();
float result =;
float x=;
number = str.split("\\/|\\*|\\+|\\-");
operater= str.split("\\d+");
if(number.length<)throw new Exception("请输入两位计算数以上!");
for(int i = ; i<number.length;i++)
{
try
{
x=Float.parseFloat(number[i]);
}
catch(NumberFormatException e)
{
throw new Exception("输入错误!请重新输入!");
}
if(operater[i].equals("/"))if(x==)throw new Exception("除数不能为0!");
countStack1.push(number[i]);
if(i!=number.length-)
{
if(operater[i+]!=null)countStack1.push(operater[i+]);
}
}
while(!countStack1.isEmpty())countStack2.push(countStack1.pop());
String op;
while(!countStack2.isEmpty())
{
result=;
op=countStack2.pop().toString();
if(op.equals("*"))
{
result=Float.parseFloat(countStack1.pop().toString())*Float.parseFloat(countStack2.pop().toString());
if(number.length==)return result;
countStack1.push(result);
continue;
}
if(op.equals("/"))
{
result=Float.parseFloat(countStack1.pop().toString())/Float.parseFloat(countStack2.pop().toString());
if(number.length==)return result;
countStack1.push(result);
continue;
}
countStack1.push(op);
}
while(!countStack1.isEmpty())countStack2.push(countStack1.pop());
while(!countStack2.isEmpty())
{
result=;
op = countStack2.pop().toString();
if(op.equals("+"))
{
result=Float.parseFloat(countStack1.pop().toString())+Float.parseFloat(countStack2.pop().toString());
countStack1.push(result);
continue;
}
if(op.equals("-"))
{
result=Float.parseFloat(countStack1.pop().toString())-Float.parseFloat(countStack2.pop().toString());
countStack1.push(result);
continue;
}
countStack1.push(op);
}
return result;
}
}

opt

package size;
import size.opt; import java.util.*; import com.ibm.icu.text.DecimalFormat; public class Test { public static void main(String[] args) {
// TODO 自动生成的方法存根
String a=new String();
opt opt=new opt();
float x=;
Scanner in=new Scanner(System.in);
a=in.nextLine();
try {
x=opt.Math(a);
DecimalFormat df = new DecimalFormat("#.00");
x=Float.parseFloat(df.format(x));
System.out.println(x);
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} }

Test

以上3个类分别是:

A.界面函数(包括杂项)

B.计算类

C.测试类

不知道什么原因,我使用Junit总是会报错   can not create test"TestMath"

所以这一次我自己手动测试了,测试结果在我的伙伴陈思明的博客那里  地址 http://www.cnblogs.com/chensiming/

心得体会:这一次的作业也就在上一次的基础上进行更改,但是重点的Junit并不能成功,有点失望,希望下次能解决

四则运算ver.mk2的更多相关文章

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

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

  2. 20150401 作业2 结对 四则运算ver 1.0

    Web項目下 Tomcat服務器的路徑 /WebContant/ 目錄下 SE2_2.jsp <%@ page language="java" contentType=&qu ...

  3. 实验二 四则运算 完成版 ver.1

    package size; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JMenuBar; im ...

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

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

  5. 介绍一款原创的四则运算算式生成器:CalculateIt2

    家里小朋友读一年级了,最近每天都有一些10以内的加减法口算练习,作为程序员爸爸,自然也是想办法能够偷懒,让电脑出题,给小朋友做些练习.于是,自己在业余时间开发了一个四则运算算式生成器,名为:Calcu ...

  6. 一年之计在于春,2015开篇:PDF.NET SOD Ver 5.1完全开源

    前言: 自从我2014年下半年到现在的某电商公司工作后,工作太忙,一直没有写过一篇博客,甚至连14年股票市场的牛市都错过了,现在马上要过年了,而今天又是立春节气,如果再不动手,那么明年这个无春的年,也 ...

  7. 作业二:个人编程项目——编写一个能自动生成小学四则运算题目的程序

    1. 编写一个能自动生成小学四则运算题目的程序.(10分)   基本要求: 除了整数以外,还能支持真分数的四则运算. 对实现的功能进行描述,并且对实现结果要求截图.   本题发一篇随笔,内容包括: 题 ...

  8. 四则运算appNABCD模型

    团队: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnb ...

  9. 第一章-第一题(小学生四则运算)--By郭青云

    1.项目需求 a) 除了整数以外,还要支持真分数的四则运算. (例如:  1/6 + 1/8 = 7/24) b) 让程序能接受用户输入答案,并判定对错. 最后给出总共 对/错 的数量. c) 逐步扩 ...

随机推荐

  1. Redis系列二:reids介绍

    一.什么是redis.redis有哪些特性.redis有哪些应用场景.redis的版本 1. 什么是redis redis是一种基于键值对(key-value)数据库,其中value可以为string ...

  2. 【转】1.2 CDN的基本工作过程

    1.2  CDN的基本工作过程 使用CDN会极大地简化网站的系统维护工作量,网站维护人员只需将网站内容注入CDN的系统,通过CDN部署在各个物理位置的服务器进行全网分发,就可以实现跨运营商.跨地域的用 ...

  3. 2.3.3 Button(按钮)与ImageButton(图像按钮)

    本节引言: 今天给大家介绍的Android基本控件中的两个按钮控件, Button普通按钮 ImageButton图像按钮: 其实ImageButton和Button的用法基本类似,至于与图片相关的则 ...

  4. tsconfig.json

    概述 如果一个目录下存在一个tsconfig.json文件,那么它意味着这个目录是TypeScript项目的根目录. tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项. 一个项 ...

  5. [转]MFC下关于“建立空文档失败”问题的分析

    这类问题的出现主要在bool CWinApp::ProcessShellCommand(CCommandLineInfo& rCmdInfo); 函数的关键内容: BOOL bResult = ...

  6. Linux 平台下的漏洞扫描器 Vuls

    导读 Vuls 是一款适用于 Linux/FreeBSD 的漏洞扫描程序,无代理,采用 Go 语言编写,对于系统管理员来说,每天必须执行安全漏洞分析和软件更新都是一个负担. 为避免生产环境宕机,系统管 ...

  7. JBOSS安装与配置搭建本地项目环境(方便前端开发调式)

    JBOSS安装与配置搭建本地项目环境  什么是JBOSS? JBOSS是EJB的服务器,就像Tomcat是JSP服务器一样,就是服务器的一种. 环境搭建如下: 一:首先安装JDK,配置环境变量(PAT ...

  8. Python3 常见数据类型的转换

    Python3 常见数据类型的转换 一.数据类型的转换,你只需要将数据类型作为函数名即可 OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16H ...

  9. Java 中long类型转换成为int类型时可能会出错的地方

    那计算两个日期之间间隔的天数为例来说明这个问题. 下面是计算日期间隔天数的简单算法(主要出错的地方为红色标注的地方): public int getDay(String startDate, Stri ...

  10. 配置openfire环境

    Openfire 的安装和配置 1. 下载最新的openfire安装文件 官方下载站点:http://www.igniterealtime.org/downloads/index.jsp#openfi ...