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. iptables设置规则

    iptables -A INPUT -s 127.0.0.1 -p tcp --dport 8080 -j ACCEPT  添加到最后一条iptables -I INPUT -p tcp --dpor ...

  2. 【洛谷】【单调栈】P1823 音乐会的等待

    [题目描述:] N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没有人比A或B高,那么他们是可以互相看得见 ...

  3. Node.js实战(九)之事件循环

    Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高. Node.js 几乎每一个 API 都是支持回调函数的. Node ...

  4. shiro实战系列(一)之入门实战

    一.什么是shiro? Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密.   Apache Shiro 的首要目标是易于使用和理解.安全有 ...

  5. Qt Creator无法debug,报错:The selected debugger may be inappropriate for the inferior. Examining symbols and setting breakpoints by file name and line number may fail. The inferior is in the Portable ...

    看到这个报错我是绝望的 解决:下载windows sdk  win10 sdk 只安装Debugging Tools for Windows 打开 工具-选项-Kits 安装sdk成功后我们可以看到 ...

  6. 网页设计之字体和 CSS 调整

    调整 CSS 首先,我们先来看看问题的源头.CSS 的出现曾是技术的一大进步.你可以用一个集中式的样式表来装饰多个网页.如今很多 Web 开发者都会使用 Bootstrap 这样的框架. 这些框架当然 ...

  7. JS实现网页换肤功能效果

    网页换肤的基本原理 使用 JS 切换对应的 CSS 样式表.例如hao123首页的右上方就有网页换肤功能.除了切换 CSS 样式表文件之外,通常的网页换肤还需要通过 Cookie 来记录用户之前更换过 ...

  8. OpenCV开发环境搭建-并测试一个图像灰度处理程序

    转载地址:http://blog.csdn.net/sjz_iron/article/details/8614070

  9. day05-列表类型

    列表类型: 用途:存放多个值,根据索引. 定义方式:在[]内用逗号分隔开多个任意类型的值 L1 = list[{a:1,b:2,c:3}] 输出的为字典的key值 常用操作+内置方法 1.按索引取值: ...

  10. 微信小程序开发 [00] 写在前面的话,疯狂唠唠

    我总是喜欢在写东西之前唠唠嗑,按照惯例会在博文的开篇写这么一段"写在前面的话",这次却为了这个唠嗑单独开了一篇文,大概预想着要胡说八道的话有点多. 前段时间突然对小程序来了兴趣,说 ...