当前位置: 代码迷 >> Eclipse >> 新手用java编了一个计算器但是有有关问题,请大家给指点一下,多谢
  详细解决方案

新手用java编了一个计算器但是有有关问题,请大家给指点一下,多谢

热度:85   发布时间:2016-04-23 00:04:51.0
新手用java编了一个计算器但是有问题,请大家给指点一下,谢谢
package example;

import java.awt.BorderLayout;
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;
public class ui {
public String str1="",opt;
private JTextField display;
private calcultor CAL;
public ui(){
init();
}
public void init(){
JFrame f=new JFrame("计算器");
f.setLayout(new BorderLayout());
f.add(creatpane1(),BorderLayout.NORTH);
f.add(creatpane2(),BorderLayout.CENTER);
f.setSize(300,300);
    f.setLocation(400,200);
    f.setVisible(true);
}
public JPanel creatpane1(){
JPanel jp1=new JPanel();
jp1.setLayout(new BorderLayout());

display = new JTextField("0");
jp1.add(display);
return jp1;
}
private JPanel creatpane2(){
JPanel jp2=new JPanel();
jp2.setLayout(new GridLayout(4,4));
JButton button1=new JButton("1");
JButton button2=new JButton("2");
JButton button3=new JButton("3");
JButton add=new JButton("+");
JButton button4=new JButton("4");
JButton button5=new JButton("5");
JButton button6=new JButton("6");
JButton sub=new JButton("-");
JButton button7=new JButton("7");
JButton button8=new JButton("8");
JButton button9=new JButton("9");
JButton mul=new JButton("*");
JButton floa=new JButton(".");
JButton button0=new JButton("0");
JButton equal=new JButton("=");
JButton div=new JButton("/");
jp2.add(button1);
jp2.add(button2);
jp2.add(button3);
jp2.add(add);
jp2.add(button4);
jp2.add(button5);
jp2.add(button6);
jp2.add(sub);
jp2.add(button7);
jp2.add(button8);
jp2.add(button9);
jp2.add(mul);
jp2.add(floa);
jp2.add(button0);
jp2.add(equal);
jp2.add(div);
button1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
str1=str1+button1.getText();
display.setText(str1);
}
});
button2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
str1=str1+button2.getText();
display.setText(str1);
}
});
button3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
str1=str1+button3.getText();
display.setText(str1);
}
});
button4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
str1=str1+button4.getText();
display.setText(str1);
}
});
button5.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
str1=str1+button5.getText();
display.setText(str1);
}
});
button6.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
str1=str1+button6.getText();
display.setText(str1);
}
});
button7.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
str1=str1+button7.getText();
display.setText(str1);
}
});
button8.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
str1=str1+button8.getText();
display.setText(str1);
}
});
button9.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
str1=str1+button9.getText();
display.setText(str1);
}
});
button0.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
str1=str1+button0.getText();
display.setText(str1);
}
});
floa.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
str1=str1+".";
display.setText(str1);
}
});
add.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
opt="+";
setshow("");
str1="";
CAL.setopt(opt);
}
});
sub.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
opt="-";
setshow("");
str1="";
CAL.setopt(opt);
}
});
mul.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
opt="*";
setshow("");
str1="";
CAL.setopt(opt);//更新屏幕
}
});
div.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
opt="/";
CAL.setopt(opt);
}
});
equal.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
CAL.setanswer();
}
});

return jp2;
}
public double getshow(String str){
return Double.valueOf(str);
}
public void setshow(String str)
{
display.setText(str);
}
public String getopt(){
return this.opt;
}
public static void main(String[] args)
{
new ui();
}
}

这个是界面显示
package example;

public class calcultor {
   private double first,last,answer;
   private ui UI;
   public void setopt(String opt){
   first = UI.getshow(UI.str1);
   }
   public void setanswer(){
   last=UI.getshow(UI.str1);
   if(UI.getopt()=="+")
   {
   answer=first+last;
   UI.setshow(String.valueOf(answer));
   }
   else if(UI.getopt()=="-"){
   answer=first-last;
   UI.setshow(String.valueOf(answer));
   }
   else if(UI.getopt()=="*"){
   answer=first*last;
   UI.setshow(String.valueOf(answer));
   }
   else {
   if(last==0)  UI.setshow("输入有误");
   else {
   answer=first/last;
   UI.setshow(String.valueOf(answer));
   }
   }
   }
  
}
这个是功能实现  我的问题就是最后按等号得不出结果,想请问大家这是为什么,我是个新手,多多谅解
------解决思路----------------------
UI.getopt()=="-"

字符串比较要用equals方法,不是==:
"-".equals(UI.getopt())
------解决思路----------------------
有点乱,看了挺模糊的。
思路如下,点击按钮时候,计算机的text获取数字,点击计算加减乘除的时候,获取当前text的数值,将它赋值给一个临时变量。当用户按下等于号的时候,先获取计算方法,在获取第二次输入的值。根据计算方法把计算好的值赋进去。

封装,界面,计算方式,辅助。这三个类。

计算机界面 Ui.class
计算方式 Count.class
辅助 Util.class
  相关解决方案