Smarandache在1995年首次描述了中智学,并提出了一种重要的数学机制,称为中智集理论,用以处理模糊及其各种类型无法处理的不精确、不确定和不确定问题。NS是由真实程度(t)、不确定程度(i)和否定程度(f)三个自治映射得到的,取值范围为

例如对某商品的评价时,70%的人认为好,10%认为不好,而其余20%的人不做评价,那么我们可以用一个中智数来描述该商品。中智数的加法和乘法运算规则如下:

参考Windows操作系统提供的计算器设计一个中智数的计算器,要求具有如下功能:

1. 单击计算器上的数字(0、1、2、3、4、5、6、7、8、9)可以设置参与计算的运算数。

2. 单击计算器的运算符按钮(+、*)可以选择运算符号。

3. 单击计算器上S按钮可以计算出相应的得分函数值。

4. 单击计算器上的符号(=)按钮显示计算结果。

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.BadLocationException;
public class Calculator extends JFrame implements ActionListener {//首先继承JFrame类和实现事件监听的接口private JTextField jtf;private JButton jia,cheng,dian,dengyu,C,kongge1,kongge2;private JButton more,less,douhao,hanshu;private JPanel[] jp;                      //建立各个按钮、面板及double型的参数private JButton[] jb;private  double num1,num2,num3,num4,num5,num6;private String a;public  NN t1;public void Jisuanqi(String s) {setTitle(s);setBounds(350, 350, 300,300);//设置布局位置大小setVisible(true);//设置可见性setLayout(new GridLayout(6, 1, 0, 0));chushihua();}public void chushihua() {//初始化各个组件,并且添加动作监听事件的方法a="";jtf =new JTextField(12);jia =new JButton("+");jia.addActionListener(this);          cheng =new JButton("*");cheng.addActionListener(this);dian = new JButton(".");dian.addActionListener(this);dengyu = new JButton("=");dengyu.addActionListener(this);C =new JButton("C");C.addActionListener(this);kongge1=new JButton("DEL");kongge2=new JButton("Ans");more =new JButton(">");more.addActionListener(this);less =new JButton("<");less.addActionListener(this);hanshu =new JButton("S");hanshu.addActionListener(this);douhao =new JButton(",");douhao.addActionListener(this);jb=new JButton[10];for(int i=0;i<jb.length;i++){jb[i]=new JButton(String.valueOf(i));jb[i].addActionListener(this);}jp=new JPanel[6];for(int i=0;i<jp.length;i++){jp[i]=new JPanel();}jp[0].add(jtf);jp[0].add(C);add(jp[0]);jp[1].add(jb[7]);jp[1].add(jb[8]);//将各个组件分别放入6个面板中,再将各个面板放入大容器中jp[1].add(jb[9]);jp[1].add(jia);add(jp[1]);jp[2].add(jb[4]);jp[2].add(jb[5]);jp[2].add(jb[6]);jp[2].add(kongge1);add(jp[2]);jp[3].add(jb[1]);jp[3].add(jb[2]);jp[3].add(jb[3]);jp[3].add(cheng);add(jp[3]);jp[4].add(jb[0]);jp[4].add(dian);jp[4].add(dengyu);jp[4].add(kongge2);add(jp[4]);jp[5].add(hanshu);jp[5].add(more);jp[5].add(less);jp[5].add(douhao);add(jp[5]);setVisible(false);setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {//设置触发事件所发的行动// TODO Auto-generated method stubif(e.getSource()==C){jtf.setText("");}if(e.getSource()==dengyu)//判断按钮的内容{String a3=jtf.getText();//获取文本框的内容,并转换成字符串num4=Double.valueOf(a3.replaceAll("<","" ).replaceAll(">", "" ).split(",")[0]);   //将文本框的内容先将<>去掉           num5=Double.valueOf(a3.replaceAll("<","" ).replaceAll(">", "" ).split(",")[1]);    //再按照逗号分割成字符串数组     num6=Double.valueOf(a3.replaceAll("<","" ).replaceAll(">", "" ).split(",")[2]);    //最后转化成double型进行赋值操作                NN t2=new NN(num4,num5,num6);//将刚才赋值的参数进行初始化NN类对象if(a.equals("+")){jtf.setText(t1.add(t2).toString());}//调用add方法进行运行,在调用tostring方法进行转换if(a.equals("*")){jtf.setText(t1.mult(t2).toString());}}     if("+*".contains(e.getActionCommand()))                                                    {String a2=jtf.getText();num1=Double.valueOf(a2.replaceAll("<","" ).replaceAll(">", "" ).split(",")[0]);            num2=Double.valueOf(a2.replaceAll("<","" ).replaceAll(">", "" ).split(",")[1]);num3=Double.valueOf(a2.replaceAll("<","" ).replaceAll(">", "" ).split(",")[2]);t1=new NN(num1,num2,num3);a=e.getActionCommand();//当输入第一个数据后,若点击*或+的按钮则先清空文本框jtf.setText("");}if("0.123456789><,".contains(e.getActionCommand())){jtf.setText(jtf.getText()+e.getActionCommand());//若点击标签为0.123456789><,的按钮,则进行文本框追加操作}if(e.getSource()==hanshu) {String a1=jtf.getText();//获取文本框内容num1=Double.valueOf(a1.replaceAll("<","" ).replaceAll(">", "" ).split(",")[0]);//将文本框的内容先将<>去掉               num2=Double.valueOf(a1.replaceAll("<","" ).replaceAll(">", "" ).split(",")[1]);//再按照逗号分割成字符串数组num3=Double.valueOf(a1.replaceAll("<","" ).replaceAll(">", "" ).split(",")[2]);//最后转化成double型进行赋值操作NN t1=new NN(num1,num2,num3);jtf.setText(String.valueOf(t1.getS()));//调用getS方法进行运算,得到double型的结果,再将他进行转换成字符串,写入文本框}}import java.math.BigDecimal;
import java.math.RoundingMode;public class NN {//创建各个所需的参数private double T;//真实程度private double I;//不确定程度private double F;//否定程度private double S;//得分函数public double getT() {return T;}public void setT(double t) {//获取其参数对象的get和set方法T = t;}public double getI() {return I;}public void setI(double i) {I = i;}public double getF() {return F;}public void setF(double f) {F = f;}public double getS() {return S;}public void setS(double s) {S = s;}public NN(double t, double i, double f) {//创建含参构造器super();T = t;I = i;F = f;S =formatdou2((1+t-2*i-f)/2);//定义函数的运算模式}public NN(){//创建无参构造器super();}public NN add(NN n) {//定义中智数的加法运算double ret =formatdou2(this.T+n.getT()-this.T*n.getT());double rei =formatdou2(this.I*n.getT());double ref =formatdou2(this.F*n.getF());NN re =new NN(ret, rei, ref);return re;}public NN mult(NN n) {//定义中智数的乘法运算double ret =formatdou2(this.T*n.getT());double rei =formatdou2(this.I+n.getI()-this.I*n.getI());double ref =formatdou2(this.F+n.getF()-this.F*n.getT());NN re =new NN(ret, rei, ref);return re;}public String toString() {//定义所获得结果后显示在文本框的格式return "<"+this.T+","+this.I+","+this.F+">";}private double formatdou2(double d) {//定义运算的精度及保留位数的形式String result = String .format("%.3f",d);return Double.valueOf(result);}
}
public class test {//创建测试类进行运行public static void main(String[] args) {// TODO Auto-generated method stubCalculator c =new Calculator();//创建中智数计算器对象c.Jisuanqi("中智数计算器");//调用方法}
}

测试结果如下图

基于java设计一个可视化中智数计算器相关推荐

  1. 基于Java设计一个短链接生成系统

    相信大家在生活中会收到很多短信,而这些短信都有一个特点是链接很短.这些链接背后的原理是什么呢?怎么实现的?小编今天就带你们详细了解一下 我们知道,短信有些是有字数限制的,直接放一个带满各种参数的链接, ...

  2. 如何用Java设计一个简单的窗口界面(学习中.1)

    如何用Java设计一个简单的窗口界面 一.前言 二.简单了解 1.Swing简介 2.框架(frame) 3.层次 三.步骤 1.打开eclipse,依次创建项目,包,类. 2.代码 2.1最简单的可 ...

  3. list申请java,java把一个list中的内容添加到另一个list中 FPGA编程问题:有多个.v文件与module,把他们加到......

    导航:网站首页 > java把一个list中的内容添加到另一个list中 FPGA编程问题:有多个.v文件与module,把他们加到... java把一个list中的内容添加到另一个list中 ...

  4. python相关毕设题目_基于java的一个有创意的web毕设题目

    基于java的一个有创意的web毕设题目 一个有创意的web毕设题目 本课题将结合基于Java Web技术的名师一对一课程预约系统,根据本课题的最终目标,在线用户注册.相关信息发布.在线咨询.预约试听 ...

  5. java 员工类算工资_用java设计一个员工类,可以计算工资个人所得税

    用java设计一个员工类,可以计算工资个人所得税 1. 背景 老师在课上布置了几道java编程题,此为其中之一 2. 题目内容 设计一个员工类.该员工具有下列私有属性:编号,姓名,基本工资,奖金  提 ...

  6. java完成一个学生信息调查程序_利用Java设计一个简单的学生信息管理程序

    利用Java设计一个简单的控制台学生信息管理程序 此程序可作为课设的参考,其中信息存储于文件中. 创建了学生类Student,用于存储学号等的信息.创建StudentFunction类,用于实现诸如学 ...

  7. java设计一个形状shape_编程定义一个图形接口 Shape, 内含2个抽象方法 get... JAVA编程题:编一个程序包含一个接口 shape(该接......

    导航:网站首页 > 编程定义一个图形接口 Shape, 内含2个抽象方法 get... JAVA编程题:编一个程序包含一个接口 shape(该接... 编程定义一个图形接口 Shape, 内含2 ...

  8. 面试题之如何用Java设计一个自动售货机

    如何用Java设计一个自动售货机程序是一个非常好的Java面试题.大多数情况会在面试比较senior的Java开发者的时候出现.在一个典型的代码面试中,你需要在一定的时间内根据对应的条件完成相关的代码 ...

  9. 签到考勤java课设_用Java设计一个考勤模拟程序Attendance

    用Java设计一个考勤模拟程序Attendance,实现如下功能选择界面: 1--上班签到 2--下班签出 3--考勤信息查阅 4--退出 考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用 ...

最新文章

  1. 量子技术新突破!科学家完美实现将单个原子逐一嵌入硅晶片
  2. flyway常用配置_Spring Boot 2 实战:使用 Flyway 管理你数据库的版本变更
  3. 阿里云,我的一些看法
  4. 推荐算法炼丹笔记:标签工程
  5. Vue+Element导入导出Excel
  6. java -web html5学习1
  7. 只读数据文件损坏恢复
  8. 基金01、03文件,92、94文件、52、53、59等文件是指什么
  9. 面试题:原型Bean在一个线程多次获取是否一样?
  10. CE 自带Tutorial -第9关
  11. inteli211网卡linux驱动,Intel英特尔I210/I340/I350/82575/82580系列网卡驱动5.5.2版For Linux(2021年2月1日发布)...
  12. 难分伯仲,驱动人生驱动精灵巅峰评测?
  13. Vue的ESLint-stylelint-prettier联合配置
  14. python获取文字坐标_python坐标获取
  15. Julia中的numerator()函数
  16. 【科研绘图】-C4D搭建石墨烯
  17. html设置背景图片高度,如何使用CSS设置背景图像的大小?
  18. 前端实现图片快速反转替换_在canvas上实现元素图片镜像翻转动画效果的方法
  19. 川土微 数字隔离器 CA-IS3722HS可替代ADUM1201ARZ
  20. 【MySQL】逻辑库与数据表相关操作

热门文章

  1. SVN提交代码冲突解决方法总结
  2. python如何重新开始程序_如何使Python程序自动重新启动
  3. Kubernetes 资源清单与Pod生命周期
  4. js面试题自测:在对象中,找出所有的d值。字符串大写转换小写。实现一个方法,实现打印4次zhengzhou,每次间隔1s。
  5. Python 3.8 发布,新特性全面解读!
  6. 计算机发明审查指南,涉及计算机程序发明的客体审查基准剖析
  7. ubuntu虚拟机VmWare与主机共享文件夹设置
  8. CUDA 8.0 + Ubuntu 16.04 @ 双显卡笔记本(核显+独显)安装教程
  9. SolidWorks 2-7 草图的约束【课程来自虎课网】
  10. jasperreport生成html,解决JasperReport 导出 Html 时图片显示问题 | 谢邵虎的博客