package calculator;/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
import javax.swing.*;
//import java.swing.event.*;
import java.awt.event.*;
import java.awt.*;public class Calculator
    extends JFrame {
  private JButton[] bts = null;
  private String[] btNames = {
      "CE", "C", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0",
      "+", "-", "*", "/", "=", "Sqrt", "1/X", "B","."};  private JLabel input = new JLabel("");
  private JLabel result = new JLabel("");
  private JLabel lInput=new JLabel("input: ");
  private JLabel lResult = new JLabel("result: ");
  private static final int ADD = 12; //jia
  private static final int REDUCE = 13; //jian
  private static final int MULTIPLICATION = 14; //cheng
  private static final int DIV = 15; //chu
  private static final int RESULT = 16; //jieguo
  private static final int SQRT = 17; //pingfang
  private static final int RECIPROCAL = 18; //daoshu
  private static final int BINARY = 19; //erjinzhi
  private Container container;
  private GridBagLayout layout;
  private GridBagConstraints constraints;
  private StringBuffer sb = new StringBuffer();
  public Calculator() {
    super("Calculator");
    setSize(400, 200);
    setLocation(200, 150);
    setVisible(true);
    setResizable(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    container = getContentPane();
    layout = new GridBagLayout();
    container.setLayout(layout);
    constraints = new GridBagConstraints();
    addComponent(lInput, 0, 0, 1, 1);
    addComponent(input, 0, 1, 10, 1);
    addComponent(lResult, 1, 0, 1, 1);
    addComponent(result, 1, 1, 10, 1);
    bts = new JButton[btNames.length];
    for (int i = 0; i < btNames.length; i++) {
      bts[i] = new JButton(btNames[i]);
      if (i < 2)
        addComponent(bts[i], 3, i + 5, 1, 1);
      else if (i > 1 && i < 9)
        addComponent(bts[i], 4, i - 2, 1, 1);
      else if (i > 8 && i < 16)
        addComponent(bts[i], 5, i - 9, 1, 1);
      else if (i > 15)
        addComponent(bts[i], 6, i - 16, 1, 1);
      bts[i].addActionListener(
          new ActionListener() {
        public void actionPerformed(ActionEvent e) {          JButton bt = (JButton) e.getSource();
          String btName = bt.getLabel().trim();
          int flag = indexButton(btName);
          //is nummber button          if (((flag > 1 && flag < 12)||flag==20) && sb.length() < 20) {
            sb.append(btName);
            input.setText(sb.toString());          }
          else {
            String rs="";
            switch (flag) {
              case Calculator.ADD:
                rs=addDo();break;
              case Calculator.REDUCE:
                rs=rdeDo();break;
              case Calculator.MULTIPLICATION:
                rs=mltDo();break;
              case Calculator.DIV:
                rs=divDo();break;
              case Calculator.RESULT:
                rs=resultDo();break;
              case Calculator.SQRT:
                rs=sqrtDo();break;
              case Calculator.RECIPROCAL:
                rs=rpcDo();break;
              case Calculator.BINARY:
                rs=bayDo();
            }
            sb=new StringBuffer();
            result.setText(rs);
          }        }
      }
      );    }    setVisible(true);
  }//jia
  private String addDo() {
    float sum = 0;
    float old = 0;
    float now = 0;
    String sOldSum = result.getText();
    String sNum = input.getText();
    input.setText("");
    old = check(sOldSum);
    now = check(sNum);
    sum=old+now;
    return String.valueOf(sum);
  }//jian
  private String rdeDo() {
    return null;
  }//cheng
  private String mltDo() {
    return null;
  }//chu
  private String divDo() {
    return null;
  }//pingfang
  private String sqrtDo() {
    return null;
  }//daoshu
  private String rpcDo() {
    return null;
  }//dengyu
  private String resultDo() {
    return null;
  }//erjinzhi
  private String bayDo() {
    return null;
  }  private int indexButton(String name) {
    for (int i = 0; i < btNames.length; i++) {
      if (name.equals(btNames[i])) {
        return i;
      }
    }
    return -1;
  }
  private float check(String sNum){
    float num=0;
    if(sNum!=null&&!sNum.equals("")){
      num=Float.parseFloat(sNum);
    }
    return num;
  }
  private void addComponent(Component component, int row, int column, int width,
                            int height) {
    constraints.gridx = column;
    constraints.gridy = row;    constraints.gridwidth = width;
    constraints.gridheight = height;    layout.setConstraints(component, constraints);
    container.add(component);
  }  public static void main(String args[]) {
//    new Calculator().show();
    String s="FAasdfj8d";
String temp = s.substring(s.length()-2, s.length());
try{
    int i = Integer.parseInt(temp);
    if(i>15)
       System.out.println("YES");
    else
       System.out.println("no");
}catch(NumberFormatException e){
    System.out.println("no");
}
  }}
只写了加法其他还没实现。其他的功能在上面添加就行了。刚学java各位见笑了。请多指教。

解决方案 »

  1.   

    提醒你一下,double和float是不适合做科学计算的
      

  2.   

    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.show();
       }
    }/**
       A frame with a calculator panel.
    */
    class CalculatorFrame extends JFrame
    {
       public CalculatorFrame()
       {
          setTitle("Calculator");      Container contentPane = getContentPane();
          CalculatorPanel panel = new CalculatorPanel();
          contentPane.add(panel);
          pack();
       }
    }
    /**
       A panel with calculator buttons and a result display.
    */
    class CalculatorPanel extends JPanel
    {  
       public CalculatorPanel()
       {  
          setLayout(new BorderLayout());      result = 0;
          lastCommand = "=";
          start = true;
          
          // add the display      display = new JLabel("0");
          add(display, BorderLayout.NORTH);
          
          ActionListener insert = new InsertAction();
          ActionListener command = new CommandAction();      // add the buttons in a 4 x 4 grid      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);
       }   /**
          Adds a button to the center panel.
          @param label the button label
          @param listener the button listener
       */
       private void addButton(String label, ActionListener listener)
       {  
          JButton button = new JButton(label);
          button.addActionListener(listener);
          panel.add(button);
       }   /**
          This action inserts the button action string to the
          end of the display text.
       */
       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);
          }
       }   /**
          This action executes the command that the button
          action string denotes.
       */
       private class CommandAction implements ActionListener
       {
          public void actionPerformed(ActionEvent evt)
          {  
             String command = evt.getActionCommand();         if (start)
             {  
                if (command.equals("-")) 
                { 
                   display.setText(command); 
                   start = false; 
                }
                else 
                   lastCommand = command;
             }
             else
             {  
                calculate(Double.parseDouble(display.getText()));
                lastCommand = command;
                start = true;
             }
          }
       }   /**
          Carries out the pending calculation. 
          @param x the value to be accumulated with the prior result.
       */
       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 JLabel display;
       private JPanel panel;
       private double result;
       private String lastCommand;
       private boolean start;
    }