学了快2个月的java了(自学,初一就下学了!),连个计算器都编不出来真是惭愧,请教高手帮我写一个,说明每一步的意思,作用,希望老鸟帮下新手,感激不尽!

解决方案 »

  1.   

    import java.awt.*;
    import java.applet.*;import java.awt.event.*;import javax.swing.AbstractButton;
    import javax.swing.JFrame;import javax.swing.*;
    class MyFrame extends JFrame
    {
    public  MyFrame(){
    setTitle("计算器");
    MyPanel panel= new MyPanel();
    add(panel);
    pack();
    }
    }class MyPanel extends JPanel{
    private JButton display;
    private JPanel panel;
    private double result;
    private String lastCommand;
    private boolean start;
    public MyPanel(){
    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("0",insert);
    addButton(".",insert);
    addButton("-",command);
    addButton("=",command);
    add(panel,BorderLayout.CENTER);
    addButton("+",command);
    }
    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 e) {
    String input=e.getActionCommand();
    if(start){
    display.setText("");
    start = false;
    }
    display.setText(display.getText()+input);
    }

    }
    private class CommandAction implements ActionListener{
    public void actionPerformed(ActionEvent e) {
    String command =e.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;
              display.setText(""+result);
             }
    }
    public class Calculator{
    public static void main(String[] args){
    MyFrame jisuan=new MyFrame();
    jisuan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jisuan.setVisible(true);
    }
    }
      

  2.   

    楼主应该是要控制台 DOS下运行的那个版本吧
      

  3.   


    import java.util.Scanner;public class Calc {
    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int select = -1;
    double num1,num2,result;
    boolean flag = true;
    do {
    System.out.println("请选择功能(输入相应的编号):");
    System.out.println("1.加法 2.减法 3.乘法 4.除法 5.退出");
    select = input.nextInt();
    if(select < 1 || select > 5) {
    System.out.println("请选择合适的功能!");
    continue;
    } else if(select == 5) {
    flag = false;
    break;
    }
    System.out.println("请输入参加运算的两个数:");
    num1 = input.nextDouble();
    num2 = input.nextDouble();
    switch(select) {
    case 1:
    result = num1 + num2;
    System.out.println(num1 + "+" + num2 + "=" + result);
    break;
    case 2:
    result = num1 - num2;
    System.out.println(num1 + "-" + num2 + "=" + result);
    break;
    case 3:
    result = num1 * num2;
    System.out.println(num1 + "*" + num2 + "=" + result);
    break;
    case 4:
    if(num2 == 0) {
    System.out.println("除数不能为0!");
    continue;
    }
    result = num1 / num2;
    System.out.println(num1 + "/" + num2 + "=" + result);
    break;
    }
    } while(flag);
    }
    }