当前位置: 代码迷 >> J2SE >> 想编一个计算器的程序,结果一开始就出错了,求指点!解决思路
  详细解决方案

想编一个计算器的程序,结果一开始就出错了,求指点!解决思路

热度:332   发布时间:2016-04-24 18:11:16.0
想编一个计算器的程序,结果一开始就出错了,求指点!
Java code
import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Calculator {    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable(){            public void run(){********************************MFrame f=new MFrame("Calculator");                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                f.setVisible(true);            }        });    }}class MFrame extends JFrame{    public MFrame(String title){        super(title);        setBounds(100,100,306,360);        this.setResizable(false);        setLayout(null);        TextField tf=new TextField();        tf.setLocation(20, 20);        tf.setSize(260,50);        this.add(tf);        Button bd[]=new Button[12];        String[]s={"7","8","9","/","4","5","6","*","1","2","3","-"};        int[]bdx=new int[4];        int[]bdy=new int[3];        for(int i=0;i<4;i++){            bdx[i]=20+70*i;//设置按钮的x轴坐标        }        for(int i=0;i<3;i++){            bdy[i]=80+70*i;//设置按钮的y轴坐标        }        for(int i=0;i<bd.length;i++){            for(int j=0;j<4;j++){                for(int k=0;k<3;k++){****************************************bd[i].setBounds(bdx[j],bdy[k],50,50);//定义按钮的位置以及大小                    bd[i].setName(s[i]);//定义按钮的名称                }                            }            this.add(bd[i]);                    }                    }    }class Monitor implements ActionListener{    public void actionPerformed(ActionEvent e) {        // TODO 自动生成方法存根            }    }

没有报错但是******行出现了问题还有就是一大堆的下面的情况
Java code
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException    at MFrame.<init>(Calculator.java:38)    at Calculator$1.run(Calculator.java:8)    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)    at java.awt.EventQueue.access$000(EventQueue.java:101)    at java.awt.EventQueue$3.run(EventQueue.java:666)    at java.awt.EventQueue$3.run(EventQueue.java:664)    at java.security.AccessController.doPrivileged(Native Method)    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)    at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)


------解决方案--------------------
先把button数组初始化。

ps不用混用awt/swing。
------解决方案--------------------
Java code
//给你参考一下:import java.awt.BorderLayout;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.*;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JTextField;import javax.swing.JButton;public class Calc extends JFrame implements ActionListener {    private JPanel contentPane;    private JButton JBone = new JButton("1");    private JButton JBtwo = new JButton("2");    private JButton JBthree = new JButton("3");    private JButton JBfour = new JButton("4");    private JButton JBfive = new JButton("5");    private JButton JBsix = new JButton("6");    private JButton JBseven = new JButton("7");    private JButton JBeight = new JButton("8");    private JButton JBnight = new JButton("9");    private JButton JBzero = new JButton("0");    private JButton JBpoint = new JButton(".");    private JButton JBadd = new JButton("+");    private JButton JBmultiply = new JButton("*");    private JButton JBdivide = new JButton("/");    private JButton JBsubtract = new JButton("-");    private JButton JBequals = new JButton("=");    private JButton JBdbzero = new JButton("00");    private String tempOperand1 = null; //增加全局变量增加全局变量增加全局变量增加全局变量    private String tempOperand2 = null;    private JTextField tf = new JTextField();// 显示框    private JButton JBclear = new JButton("清零");    boolean add = false, substract = false, multiply = false, divide = false;    public Calc() {    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    setBounds(100, 100, 369, 448);    setTitle("JAVA版计算器");    contentPane = new JPanel();    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));    contentPane.setLayout(null);    setContentPane(contentPane);    tf.setBounds(10, 10, 333, 34);    contentPane.add(tf);    tf.setColumns(10);    tf.setEditable(false);    JBone.setBounds(30, 283, 52, 42);// 数字1    contentPane.add(JBone);    JBone.addActionListener(this);    JBtwo.setBounds(92, 283, 52, 42);// 数字2    contentPane.add(JBtwo);    JBtwo.addActionListener(this);    JBthree.setBounds(154, 283, 52, 42);// 数字3    contentPane.add(JBthree);    JBthree.addActionListener(this);    JBfour.setBounds(30, 231, 52, 42);// 数字4    contentPane.add(JBfour);    JBfour.addActionListener(this);    JBfive.setBounds(92, 231, 52, 42);// 数字5    contentPane.add(JBfive);    JBfive.addActionListener(this);    JBsix.setBounds(154, 231, 52, 42);// 数字6    contentPane.add(JBsix);    JBsix.addActionListener(this);    JBseven.setBounds(30, 179, 52, 42);// 数字7    contentPane.add(JBseven);    JBseven.addActionListener(this);    JBeight.setBounds(92, 179, 52, 42);// 数字8    contentPane.add(JBeight);    JBeight.addActionListener(this);    JBnight.setBounds(154, 179, 52, 42);// 数字9    contentPane.add(JBnight);    JBnight.addActionListener(this);    JBzero.setBounds(30, 343, 52, 42);// 数字0    contentPane.add(JBzero);    JBzero.addActionListener(this);    JBpoint.setBounds(92, 343, 52, 42);// 按钮.    contentPane.add(JBpoint);    JBpoint.addActionListener(this);    JBadd.setBounds(221, 283, 52, 102);// 按钮+    contentPane.add(JBadd);    JBadd.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {        add = true;        tempOperand1 = tf.getText().trim();        tf.setText("");        }    });    JBmultiply.setBounds(221, 231, 52, 42);// 按钮*    contentPane.add(JBmultiply);    JBmultiply.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {        multiply = true;        tempOperand1 = tf.getText().trim();        tf.setText("");        }    });    JBdivide.setBounds(283, 231, 52, 42);// 按钮/    contentPane.add(JBdivide);    JBdivide.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {        divide = true;        tempOperand1 = tf.getText().trim();        tf.setText("");        }    });    JBsubtract.setBounds(283, 283, 52, 42);// 按钮-    contentPane.add(JBsubtract);    JBsubtract.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {        substract = true;        tempOperand1 = tf.getText().trim();        tf.setText("");        }    });    JBequals.setBounds(283, 343, 52, 42);// 按钮=    contentPane.add(JBequals);    JBequals.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {        tempOperand2 = tf.getText().trim();        ;        double operand1 = Double.parseDouble(tempOperand1);// 既然都有小数点了,就干脆用Double型把        double operand2 = Double.parseDouble(tempOperand2);        double result = 0;        if (add) {            result = operand1 + operand2;            add = false;        }        if (substract) {            result = operand1 - operand2;            substract = false;        }        if (multiply) {            result = operand1 * operand2;            multiply = false;        }        if (divide) {            result = operand1 / operand2;            divide = false;        }        tf.setText(result + "");        tempOperand1 = null;        tempOperand2 = null;        }    });    JBdbzero.setBounds(154, 343, 52, 42);// 按钮00 ////干嘛用的???????????????    contentPane.add(JBdbzero);    JBdbzero.addActionListener(this);//是不是想添加正负号??????    JBclear.setBounds(270, 179, 65, 42);    contentPane.add(JBclear);    JBclear.addActionListener(this);    }    public void actionPerformed(ActionEvent e) {    String m = null;    m = tf.getText().toString();        if (e.getSource() == JBone) {                m += "1";        tf.setText(m);          } else if (e.getSource() == JBtwo) {               m += "2";        tf.setText(m);           } else if (e.getSource() == JBthree) {               m += "3";        tf.setText(m);          } else if (e.getSource() == JBfour) {               m += "4";        tf.setText(m);           } else if (e.getSource() == JBfive) {                m += "5";        tf.setText(m);            } else if (e.getSource() == JBsix) {               m += "6";        tf.setText(m);           } else if (e.getSource() == JBseven) {               m += "7";        tf.setText(m);            } else if (e.getSource() == JBeight) {                m += "8";        tf.setText(m);           } else if (e.getSource() == JBnight) {                m += "9";        tf.setText(m);           } else if (e.getSource() == JBdbzero) {               m += "00";        tf.setText(m);          } else if (e.getSource() == JBpoint) {                m += ".";        tf.setText(m);           } else if (e.getSource() == JBclear) {        tf.setText("");    }     }    public static void main(String[] args) {    EventQueue.invokeLater(new Runnable() {        public void run() {        try {            Calc frame = new Calc();            frame.setVisible(true);        } catch (Exception e) {            e.printStackTrace();        }        }    });    }}
  相关解决方案