请问下各位大虾们,我现在在编一个计算器的作业交上去,
请问下,*  -  + =  这些符号怎么实现他的功能,
需要用到哪些类,接口

解决方案 »

  1.   


    直接用好了int a,b,c;c=a+b;
    c=a-b;
    c=a*b;
    c=a/b;
    是不是被概念忽悠了...张口就类和接口...
    这些基本的...系统默认类里面都带上了
      

  2.   

    饿晕我最近才开始学JAVA  很不懂。。基础太差了  谢谢
      

  3.   

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class MyCalculater extends JFrame implements ActionListener{JTextField tf=new JTextField();
    String num="";
    Double number;
    int pointCount=0;char operation; JButton    b1=new JButton("1");
    JButton    b2=new JButton("2");
    JButton    b3=new JButton("3");
    JButton    b4=new JButton("4");
    JButton    b5=new JButton("5");
    JButton    b6=new JButton("6");
    JButton    b7=new JButton("7");
    JButton    b8=new JButton("8");
    JButton    b9=new JButton("9");
    JButton    b0=new JButton("0");
    JButton    b10=new JButton("+");
    JButton    b11=new JButton("-");
    JButton    b12=new JButton("*");
    JButton    b13=new JButton("/");
    JButton    b14=new JButton("=");
    JButton    b15=new JButton(".");
    JButton    b16=new JButton("<-");
    JButton    b17=new JButton("S");
    JButton    b18=new JButton("C");
    JButton    b19=new JButton("+/-");void buildConstraints(GridBagConstraints gbc,int gx,int gy,
    int gw,int gh,int wx,int wy){gbc.gridx=gx;
    gbc.gridy=gy;
    gbc.gridwidth=gw;
    gbc.gridheight=gh;
    gbc.weightx=wx;
    gbc.weighty=wy;}  
    public  MyCalculater(){                    
    super("MyCaculater");
    setBounds(200,200,280,215);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(false);GridBagLayout exlayout=new GridBagLayout();
    GridBagConstraints constraints=new GridBagConstraints();
    JPanel expane=new JPanel();
    expane.setLayout(exlayout);
        b0.addActionListener(this);
    b1.addActionListener(this);
    b2.addActionListener(this);
        b3.addActionListener(this);
        b4.addActionListener(this);
    b5.addActionListener(this);
        b6.addActionListener(this);
    b7.addActionListener(this);
    b8.addActionListener(this);
        b9.addActionListener(this);
        b10.addActionListener(this);
    b11.addActionListener(this);
        b12.addActionListener(this);
    b13.addActionListener(this);
    b14.addActionListener(this);
        b15.addActionListener(this);
        b16.addActionListener(this);
    b17.addActionListener(this);
        b18.addActionListener(this);
    b19.addActionListener(this);GridLayout inlayout=new GridLayout(4,5,5,5);
    JPanel inpane2=new JPanel();
    inpane2.setLayout(inlayout);
    inpane2.add(b1);
    inpane2.add(b2);
    inpane2.add(b3);
    inpane2.add(b10);
    inpane2.add(b18);
    inpane2.add(b4);
    inpane2.add(b5);
    inpane2.add(b6);
    inpane2.add(b11);
    inpane2.add(b16);
    inpane2.add(b7);
    inpane2.add(b8);
    inpane2.add(b9);
    inpane2.add(b12);
    inpane2.add(b19);
    inpane2.add(b0);
    inpane2.add(b15);
    inpane2.add(b13);
    inpane2.add(b17);
    inpane2.add(b14);
        tf.setEditable(false);
        buildConstraints(constraints,0,0,1,1,100,20);
        constraints.fill=GridBagConstraints.HORIZONTAL;
        
        exlayout.setConstraints(tf,constraints);
        expane.add(tf);
        
        buildConstraints(constraints,0,1,1,1,100,80);
        exlayout.setConstraints(inpane2,constraints);
        
        
    expane.add(inpane2);
    setContentPane(expane); 
    setVisible(true);}
    public void actionPerformed(ActionEvent event){ 
    if(event.getSource()==b10){if(num!=""){// if num have not exact digital,then press +,-*/ button
       operation='+';
       number=new Double(num);
       num="";
       if(pointCount!=0)
         pointCount=0;
       
     
    }
    }
      
    if(event.getSource()==b11){
    if(num!=""){
    operation='-';
       number=new Double(num);
       num="";
        if(pointCount!=0)
         pointCount=0;
    }}
      
        if(event.getSource()==b12){
        if(num!=""){
        operation='*';
           number=new Double(num);
           num="";
            if(pointCount!=0)
         pointCount=0;
        }
        
        }
       
    if(event.getSource()==b13){
    if(num!=""){
    operation='/';
       number=new Double(num);
       num="";
       if(pointCount!=0)
         pointCount=0; 
    }}
       
                  
    //number control
    if(event.getSource()==b1){
    num=num+'1';
    tf.setText(num);}
      
    if(event.getSource()==b2){
    num=num+'2';
    tf.setText(num);
    }
      
    if(event.getSource()==b3){
    num=num+'3';
    tf.setText(num);
    }
      
    if(event.getSource()==b4){
    num=num+'4';
    tf.setText(num);
    }
      
    if(event.getSource()==b5){
    num=num+'5';
    tf.setText(num);
    }
      
    if(event.getSource()==b6){
    num=num+'6';
    tf.setText(num);
    }
      
    if(event.getSource()==b7){
    num=num+'7';
    tf.setText(num);
    }  
    if(event.getSource()==b8){
    num=num+'8';
    tf.setText(num);
     
    }
        
    if(event.getSource()==b9){
    num=num+'9';
    tf.setText(num);
    }
      
    if(event.getSource()==b0){
    num=num+'0';                     
    tf.setText(num);
    }
      
    if(event.getSource()==b15){
       if(pointCount==0){
         num=num+'.';
         pointCount++;
       }
       tf.setText(num);}
    if(event.getSource()==b16){if(num.length()==1){num="";
    tf.setText(num);
    char n[]=num.toCharArray();
    boolean pointExist=false;for(int i=0;i<=(num.length()-1);i++)
        {
       if(n[i]=='.')
       pointExist=true;
       break;
        }       if(pointExist==false)
           pointCount=0; }///////////////////
     if(num.length()>1){num=num.substring(0,num.length()-1);
    tf.setText(num);
    char n[]=num.toCharArray();
    boolean pointExist=false;for(int i=0;i<=(num.length()-1);i++)
        {
       if(n[i]=='.')
       pointExist=true;
       break;
        }       if(pointExist==false)
           pointCount=0; }///////////////////////////////

    if(event.getSource()==b17){
    if(num!=""){
      Double n=new Double(num);
      
        if(n.doubleValue()>=0){
    double display=Math.sqrt(n.doubleValue());
    num=""+display;
    tf.setText(num);
        }
        else
        tf.setText("input error");

     
      

    if(event.getSource()==b18){  
    num="0";pointCount=0;
    tf.setText(num);}   
    if(event.getSource()==b19){
    if(num!=""){    Double n=new Double(num);
        if(n.floatValue()>0){
        num="-"+n.doubleValue();
            tf.setText(num);
        }
        else {
        num=""+(-n.doubleValue());
        tf.setText(num);
        }
        
     
        }   
        }
        if(event.getSource()==b14){
        double result;
        pointCount=1;//result is a float number with '.'
        switch (operation){
        case '+':if(num!=""){
             Double n1=new Double(num);
                 result=n1.doubleValue()+number.doubleValue();
                 num=""+result;
                 tf.setText(""+result);
                 operation='\0';
                 number=new Double("0");
                 n1=null;
                 }
                  break;
        case '-':if(num!=""){ 
                 Double n2=new Double(num);
                 result=number.doubleValue()-n2.doubleValue();
                 num=""+result;
                 tf.setText(""+result);
                 operation='\0';
                 number=new Double("0");
                 n2=null;
                 }
                      
                 break;
                 
           case '*':if(num!=""){
                   Double n3=new Double(num);
                 result=number.doubleValue()*n3.doubleValue();
                 num=""+result;
                 tf.setText(""+result);
                 operation='\0';
                 number=new Double("0");
                 n3=null;
                     }
                 
                 break;
           case '/':if(num!=""){
                     Double n4=new Double(num);
                   if(n4.doubleValue()!=0){
                 result=number.doubleValue()/n4.doubleValue();
                    num=""+result;
                   tf.setText(""+result);
                   number=new Double("0");
                   operation='\0';
                    n4=null;
                    }
                    else{
                 tf.setText("input error");
                 n4=null;
                    } 
                     }
                 break;
                
                     
          default :    tf.setText(""+num);
          
        }
        }
      }// end actionPerformed()
    public static void main(String[] s){MyCalculater calculater=new MyCalculater();}
    }
      

  4.   

    先谢谢楼上的了,
    不过好多地方看不懂
    我现在在同学的指导下也做了点,不过只实现+   -  *   /    四个功能
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class NullLayout implements ActionListener
    {
    JFrame frame;
    JTextField text;
    public JButton    button_sqrt,button_plus,button_CE,button_cancel;
    public JButton    button_7,button_8,button_9,button_chu;
    public JButton    button_4,button_5,button_6,button_cheng;
    public JButton    button_1,button_2,button_3,button_jian;
    public JButton    button_0,button_dian,button_deng,button_jia;
    public double     num1=0,num2=0;
    public char       ch;
    public NullLayout()
    {

    frame =new JFrame("计算器");
    frame.setSize(250,160);
    frame.setLocation(200,200);
    frame.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    frame.setLayout(null);
    text=new JTextField();
    text.setSize(400,20);
    frame.getContentPane().add(text);
    text.setLocation(0,0);
    button_sqrt=new JButton("sqrt");
    button_sqrt.setSize(60,20);
    frame.getContentPane().add(button_sqrt);
    button_sqrt.setLocation(0,20);
    button_plus=new JButton("=/-");
    button_plus.setSize(60,20);
    frame.getContentPane().add(button_plus);
    button_plus.setLocation(60,20);
    button_CE=new JButton("CE");
    button_CE.setSize(60,20);
    frame.getContentPane().add(button_CE);
    button_CE.setLocation(120,20);
    button_cancel=new JButton("C");
    button_cancel.setSize(60,20);
    frame.getContentPane().add(button_cancel);
    button_cancel.setLocation(180,20);
    button_7=new JButton("7");
    button_7.setSize(60,20);
    frame.getContentPane().add(button_7);
    button_7.setLocation(0,40);
    button_8=new JButton("8");
    button_8.setSize(60,20);
    frame.getContentPane().add(button_8);
    button_8.setLocation(60,40);
    button_9=new JButton("9");
    button_9.setSize(60,20);
    frame.getContentPane().add(button_9);
    button_9.setLocation(120,40);
    button_chu=new JButton("/");
    button_chu.setSize(60,20);
    frame.getContentPane().add(button_chu);
    button_chu.setLocation(180,40);
    button_4=new JButton("4");
    button_4.setSize(60,20);
    frame.getContentPane().add(button_4);
    button_4.setLocation(0,60);
    button_5=new JButton("5");
    button_5.setSize(60,20);
    frame.getContentPane().add(button_5);
    button_5.setLocation(60,60);
    button_6=new JButton("6");
    button_6.setSize(60,20);
    frame.getContentPane().add(button_6);
    button_6.setLocation(120,60);
    button_cheng=new JButton("*");
    button_cheng.setSize(60,20);
    frame.getContentPane().add(button_cheng);
    button_cheng.setLocation(180,60);
    button_1=new JButton("1");
    button_1.setSize(60,20);
    frame.getContentPane().add(button_1);
    button_1.setLocation(0,80);
    button_2=new JButton("2");
    button_2.setSize(60,20);
    frame.getContentPane().add(button_2);
    button_2.setLocation(60,80);
    button_3=new JButton("3");
    button_3.setSize(60,20);
    frame.getContentPane().add(button_3);
    button_3.setLocation(120,80);
    button_jian=new JButton("-");
    button_jian.setSize(60,20);
    frame.getContentPane().add(button_jian);
    button_jian.setLocation(180,80);
    button_0=new JButton("0");
    button_0.setSize(60,20);
    frame.getContentPane().add(button_0);
    button_0.setLocation(0,100);
    button_dian=new JButton(".");
    button_dian.setSize(60,20);
    frame.getContentPane().add(button_dian);
    button_dian.setLocation(60,100);
    button_deng=new JButton("=");
    button_deng.setSize(60,20);
    frame.getContentPane().add(button_deng);
    button_deng.setLocation(120,100);
    button_jia=new JButton("+");
    button_jia.setSize(60,20);
    frame.getContentPane().add(button_jia);
    button_jia.setLocation(180,100);
    button_0.addActionListener(this);
    button_1.addActionListener(this);
    button_2.addActionListener(this);
    button_3.addActionListener(this);
    button_4.addActionListener(this);
    button_5.addActionListener(this);
    button_6.addActionListener(this);
    button_7.addActionListener(this);
    button_8.addActionListener(this);
    button_9.addActionListener(this);
    button_sqrt.addActionListener(this);
    button_jia.addActionListener(this);
    button_jian.addActionListener(this);
    button_cheng.addActionListener(this);
    button_chu.addActionListener(this);
    button_dian.addActionListener(this);
    button_deng.addActionListener(this);
    button_plus.addActionListener(this);
    button_cancel.addActionListener(this);
    button_CE.addActionListener(this);
    frame.setVisible(true);
    frame.setResizable(false);
    }
    public void actionPerformed(ActionEvent e)
    {
    String com=e.getActionCommand();
    if(e.getSource()==button_cancel)
      text.setText("");
    else if(com.equals("+")||com.equals("-")||com.equals("*")||com.equals("/"))
    {
    try
    {
    num1=Double.valueOf(text.getText());
    }
    catch(Exception ee)
    {
    return;
    }
    ch=com.charAt(0);
    text.setText("");
    }
    else if(e.getActionCommand().equals("="))
    {
    try{
    num2=Double.valueOf(text.getText());
    }
    catch(Exception ee)
    {
    return;
    }
    if(ch=='+')num1=num1+num2;
    else if(ch=='-')num1=num1-num2;
    else if(ch=='*')num1=num1*num2;
    else if(ch=='/')num1=num1/num2;
    text.setText(""+num1);

    else {
    text.setText(text.getText()+e.getActionCommand());
    }
    }
    public static void main(String args[])
    {
    new NullLayout();
    }
    }
    新手 希望大家多多帮忙哦
      

  5.   

    http://dreamerhx.ys168.com/myprogramming 我的程序
       csdn_Express.rar 11KB CSDN帖子部分代码我以前讨论的表达式计算,希望能给大家帮助
      

  6.   

    qfs_v(眯眼眼光)能不能讲讲如何“工厂”做到?(了解一点工厂模式)
      

  7.   

    import java.awt.event.*;
    import java.awt.*;
    import javax.swing.*;
    public class myCount extends JFrame implements ActionListener
    {
    JButton clear;
    JTextField scanner;
    mainBlock main;
    frmdia dialog;
    float floFont,floLast,floNum;
    String strFont="";
    String strLast="";
    String strNum="";
    String strSign="";
    JPanel pane;
    myCount()
    {
    super("计   算    器");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    dialog=new frmdia(this,"提示",true);
    pane=new JPanel();
    JPanel smlpane=new JPanel();
    smlpane.setLayout(new GridLayout(2,1,20,20));
    pane.setLayout(new GridLayout(2,1,0,10));
    scanner=new JTextField("0",20);
    scanner.setEditable(false);
    clear=new JButton("清          零");
    clear.addActionListener(this);
    main=new mainBlock(this);
    smlpane.add(scanner);
    smlpane.add(clear);
    pane.add(smlpane);
    pane.add(main);
    setContentPane(pane);
    }
    public void actionPerformed(ActionEvent e)
    {
    if(e.getSource()==clear)
    {
    strSign="";
    strLast="";strFont="";
    scanner.setText("0");
    floFont=0;
    floLast=0;
    repaint();
    }
    }
    public static void main(String args[])
    {
    myCount mycount=new myCount();
    mycount.pack();
    }
    public Insets getInsets()
    {
    return new Insets(40,15,25,15);
    }
    void others()
    {
    floFont=Float.parseFloat(strLast);
    if(strSign=="+")
    floNum=floLast+floFont;
    else if(strSign=="-")
    floNum=floLast-floFont;
    else if(strSign=="*")
    floNum=floLast*floFont;
    else if(strSign=="/")
    {
    if(floFont==0)
    {
    dialog.setVisible(true);
    strSign="";strNum="";
    strLast="";strFont="";
    scanner.setText("0");
    floFont=0;
    floLast=0;
    floNum=0;
    repaint();
    }else{
    floNum=floLast/floFont;
    }
    }
    strLast=""+floNum;
    strSign="";
    }
    void countNumber(mainBlock mblock,String str)
    {
    strNum=str;
    if(strNum==".")
    strNum="10";
    else if(strNum=="=")
    strNum="11";
    else if(strNum=="+")
    strNum="12";
    else if(strNum=="-")
    strNum="13";
    else if(strNum=="*")
    strNum="14";
    else if(strNum=="/")
    strNum="15";
    int i=Integer.parseInt(strNum);
    switch(i)
    {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    strLast+=(i);
    break;
    case 10:
    strLast+=".";
    break;
    case 11:
    if(strLast!="")
    {
    others();
    }
    break;
    case 12:
    if((strLast!="") && (strLast!="-"))
    {
    if(strSign!="")
    {
    others();
    }
    strSign="+";
    floLast=Float.parseFloat(strLast);
    strLast="";
    }
    break;
    case 13:
    if(strSign!="")
    {
    others();
    }
    strSign="-";
    floLast=Float.parseFloat(strLast);
    strLast="";
    break;
    case 14:
    if((strLast!="") && (strLast!="-"))
    {
    if(strSign!="")
    {
    others();
    }
    strSign="*";
    floLast=Float.parseFloat(strLast);
    strLast="";
    }
    break;
    case 15:
    if((strLast!="") && (strLast!="-"))
    {
    if(strSign!="")
    {
    others();
    }
    strSign="/";
    floLast=Float.parseFloat(strLast);
    strLast="";
    }
    break;
    }
    scanner.setText(strLast);
    pane.repaint();
    }
    }
    class mainBlock extends JPanel implements ActionListener
    {
    myCount frame;
    JButton[] btn=new JButton[16];
    mainBlock(myCount parent)
    {
    frame=parent;
    setLayout(new GridLayout(4,4,5,5));
    for(int i=0;i<10;i++)
    btn[i]=new JButton(""+i);
    btn[10]=new JButton(".");
    btn[11]=new JButton("=");
    btn[12]=new JButton("+");
    btn[13]=new JButton("-");
    btn[14]=new JButton("*");
    btn[15]=new JButton("/");
    for(int i=0;i<16;i++)
    {btn[i].addActionListener(this);}
    add(btn[12]);
    add(btn[13]);
    add(btn[14]);
    add(btn[15]);
    for(int i=1;i<10;i++)
    add(btn[i]);
    add(btn[0]);
    add(btn[10]);
    add(btn[11]);
    }
    public void actionPerformed(ActionEvent e)
    {
    String str=e.getActionCommand();
    frame.countNumber(this,str);
    }
    }
    class frmdia extends Dialog implements ActionListener
    {
    Button btn;
    Label lg;
    frmdia(JFrame frm,String str,boolean b1)
    {
    super(frm,str,b1);
    setBounds(200,250,95,110);
    setVisible(false);
    setLayout(null);
    btn=new Button("确定");
    lg=new Label("    错误参数");
    add(lg);add(btn);
    lg.setBounds(10,40,95,30);
    btn.setBounds(30,70,40,25);
    btn.addActionListener(this);
    addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    setVisible(false);
    }
    });
    }
    public void actionPerformed(ActionEvent e)
    {
    if(e.getSource()==btn)
    {
    setVisible(false);
    }
    }
    }
      

  8.   

    扫眼上面和下面的代码:
    下面可以吗?请区别"=="和equals()!
    strNum=str;
    if(strNum==".")
    strNum="10";
    else if(strNum=="=")
    strNum="11";
    else if(strNum=="+")
    strNum="12";
    else if(strNum=="-")
    strNum="13";
    else if(strNum=="*")
    strNum="14";
    else if(strNum=="/")
    strNum="15";
      

  9.   

    找了一段代码:注意他的事迹处理不完善!
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class Calculator
    {
       public static void main(String[] args)
       {  
          CalculatorFrame frame = new CalculatorFrame();
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setVisible(true);
       }
    }class CalculatorFrame extends JFrame
    {
       public CalculatorFrame()
       {
          setTitle("Calculator");
          CalculatorPanel panel = new CalculatorPanel();
          add(panel);
          pack();
       }
    }class CalculatorPanel extends JPanel
    {  
       public CalculatorPanel()
       {  
          setLayout(new BorderLayout());      result = 0;
          lastCommand = "=";
          start = true;      display = new JButton("0");
          display.setEnabled(false);
          add(display, BorderLayout.NORTH);
          
          ActionListener insert = new InsertAction();
          ActionListener command = new CommandAction();      panel = new JPanel();
          panel.setLayout(new GridLayout(4, 4));      addButton("7", insert);
          addButton("8", insert);
          addButton("9", insert);
          addButton("/", command);      addButton("4", insert);
          addButton("5", insert);
          addButton("6", insert);
          addButton("*", command);      addButton("1", insert);
          addButton("2", insert);
          addButton("3", insert);
          addButton("-", command);      addButton("0", insert);
          addButton(".", insert);
          addButton("=", command);
          addButton("+", command);      add(panel, BorderLayout.CENTER);
       }   private void addButton(String label, ActionListener listener)
       {  
          JButton button = new JButton(label);
          button.addActionListener(listener);
          panel.add(button);
       }   private class InsertAction implements ActionListener
       {
          public void actionPerformed(ActionEvent event)
          {
             String input = event.getActionCommand();
             if (start) 
             {
                display.setText("");
                start = false;
             }
             display.setText(display.getText() + input);
          }
       }   private class CommandAction implements ActionListener
       {
          public void actionPerformed(ActionEvent event)
          {  
             String command = event.getActionCommand();         if (start)
             {  
                if (command.equals("-")) 
                { 
                   display.setText(command); 
                   start = false; 
                }
                else 
                   lastCommand = command;
             }
             else
             {  
                calculate(Double.parseDouble(display.getText()));
                lastCommand = command;
                start = true;
             }
          }
       }   public void calculate(double x)
       {
          if (lastCommand.equals("+")) result += x;
          else if (lastCommand.equals("-")) result -= x;
          else if (lastCommand.equals("*")) result *= x;
          else if (lastCommand.equals("/")) result /= x;
          else if (lastCommand.equals("=")) result = x;
          display.setText("" + result);
       }
       
       private JButton display;
       private JPanel panel;
       private double result;
       private String lastCommand;
       private boolean start;
    }
      

  10.   


    qfs_v(眯眼眼光)能不能讲讲如何“工厂”做到?(了解一点工厂模式)
    ----------------------
    不好意思,概念性错误!对不起.让你误会了!