猿问

我做的java简易计算机为什么等于输出不来结果,代码如下

main方法

public class main{

public static void main(String []args){

calculator ca = new calculator(200,200,200,250);

}

}

calculate类

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JTextField;


import com.sun.glass.ui.Clipboard;


public class calculator extends JFrame implements ActionListener {

JMenuBar myJMenuBar;

JMenu menu ,menu2,menu3;

JMenuItem item,item2,item3,

item4,item5,item6;

//上面定义菜单的

String num1;//定义加数,减数。就是第一个运算数

String syb;//定义运算符号,我的思路是匹配这个运算符号,符合哪个用那个运算法则

JTextField inputField;

JButton[] NumButton;//数字键

JButton[] symbol;//符号键

calculator(int width,int length,int x,int y){//画窗体

super("简单计算机");

setLayout(new FlowLayout());

setBounds(width,length,x,y);

init();

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

}


private void init() {//加组件

myJMenuBar=new JMenuBar();

menu = new JMenu("编辑");

menu2 = new JMenu("帮助");

menu3 = new JMenu("关于我们");

item = new JMenuItem("清空");

item2 = new JMenuItem("撤销");

item3= new JMenuItem("复制");

item4= new JMenuItem("作者");

item5= new JMenuItem("版本");

item6= new JMenuItem("制作日期");

item.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

inputField.setText("");

}

});

item3.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

calculator.setSystemClipboard(inputField.getText());

}

});

item4.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

JOptionPane.showMessageDialog(null, "作者:----", "作者信息", JOptionPane.ERROR_MESSAGE);

}

});

item5.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

JOptionPane.showMessageDialog(null, "版本:1.0", "版本信息", JOptionPane.ERROR_MESSAGE);

}

});

item6.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

JOptionPane.showMessageDialog(null, "制作日期:11.17.2016", "制作信息", JOptionPane.ERROR_MESSAGE);

}

});

menu.add(item);

menu.add(item2);

menu.add(item3);

menu3.add(item4);

menu3.add(item5);

menu3.add(item6);

myJMenuBar.add(menu);

myJMenuBar.add(menu2);

myJMenuBar.add(menu3);

setJMenuBar(myJMenuBar);

//上面都是菜单组件和他们方法的添加

inputField =new JTextField(13);

inputField.setHorizontalAlignment(JTextField.RIGHT);

inputField.setBackground(Color.WHITE);

inputField.setCaretColor(Color.WHITE);

add(inputField);

//显示屏的添加

NumButton = new JButton[10];

int i;

for(i= 0;i<NumButton.length;i++){

String Num =i+"";

NumButton[i]=new JButton(Num);

NumButton[i].addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {//这个方法是为了实现在显示屏追加数字的

String str = inputField.getText();

inputField.setText(str+Num);

}

});

add(NumButton[i]);

}

//数字键的添加

symbol= new JButton[6];

symbol[0]= new JButton("+");

symbol[1]= new JButton("-");

symbol[2]= new JButton("*");

symbol[3]= new JButton("/");

symbol[4]= new JButton("=");

symbol[5]= new JButton("退格");

//符号按钮声明

symbol[0].addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

num1=inputField.getText();//获取第一个运算数

syb ="+";//符号设置为加号

inputField.setText("");//点击了加号按钮后显示屏清空为了输入第二个运算数

symbol[4].addActionListener(this);//给等于号添加事件,让等于号获取第二个数,匹配符号,与第一个数运算

}

});

//下面的方法分别是减法乘法除法

symbol[1].addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

num1=inputField.getText();

syb ="-";

inputField.setText("");

symbol[4].addActionListener(this);

}

});

symbol[2].addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

num1=inputField.getText();

syb ="*";

inputField.setText("");

symbol[4].addActionListener(this);

}

});

symbol[3].addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

num1=inputField.getText();

syb ="/";

inputField.setText("");

symbol[4].addActionListener(this);

}

});

symbol[5].addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

String str = inputField.getText();

String str1 = str.substring(0,str.length()-1);

inputField.setText(str1);

}

});

//这个是清空显示屏的方法

for(i=0;i<symbol.length;i++){

add(symbol[i]);

}

}

//添加符号按钮

public static void setSystemClipboard(String refContent){

String vc = refContent.trim();

StringSelection ss = new StringSelection(vc);

java.awt.datatransfer.Clipboard sysClb = null;

sysClb =Toolkit.getDefaultToolkit().getSystemClipboard();

sysClb.setContents(ss,null);

}

//复制显示屏内容的方法

public void actionPerformed(ActionEvent e) {

if(e.getSource()==symbol[4]){

String num2 = inputField.getText();//得到第二个数

int N1 = Integer.parseInt(num1);

int N2 = Integer.parseInt(num2);

//下面是运算

String Sum=(N1+N2)+"";

String Dvalue=(N1-N2)+"";

String accumulate =(N1*N2)+"";

String discuss=(N1/N2)+"";

//下面是匹配

if(syb.equals("+")){

inputField.setText(Sum);

}

else if(syb.equals("-")){

inputField.setText(Dvalue);

}

else if(syb.equals("*")){

inputField.setText(accumulate);

}

else if(syb.equals("/")){

inputField.setText(discuss);

}

}

}//这个是等于号的方法,分别匹配了加减乘除,并且试图将结果输出到显示屏上,不过这个时候出问题了,结果没出来,显示屏清空了,可是明明没有清空的方法。

}


慕运维6388425
浏览 1823回答 1
1回答
随时随地看视频慕课网APP
我要回答