eclipse写了个java简单计算器(老师已给界面不可改动),但是运行得不到正确结果,急求大神相助

sarah-forever 2014-12-23 11:47:16
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.SystemColor;
import javax.swing.UIManager;
import javax.swing.border.LineBorder;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Calculator extends JFrame {

JLabel lblNewLabel;
//定义变量,用于计算、判断、存放数字
private boolean numflag=false;//判断是否输入数字
private boolean opflag=false;//判断是否输入运算符
private String result;//存放运算结果
private String op="";//存放运算符
private double num1=0,num2=0;//运算数
private String strnum="";//存放已输入的操作数

private JPanel contentPane;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Calculator frame = new Calculator();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Calculator() {
setBackground(Color.LIGHT_GRAY);
setTitle("\u8BA1\u7B97\u5668");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 379, 532);
contentPane = new JPanel();
contentPane.setBackground(Color.LIGHT_GRAY);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JPanel panel = new JPanel();
panel.setBounds(10, 108, 343, 378);
contentPane.add(panel);
panel.setLayout(new GridLayout(5, 4, 2, 2));

lblNewLabel = new JLabel("0");
lblNewLabel.setBorder(new LineBorder(Color.GRAY));
lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
lblNewLabel.setFont(new Font("宋体", Font.BOLD, 18));
lblNewLabel.setBounds(10, 25, 343, 39);
contentPane.add(lblNewLabel);

JButton btnNewButton_backspace = new JButton("C");//退格
btnNewButton_backspace.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
backspace("C");
}
});
panel.add(btnNewButton_backspace);

JButton btnNewButton_blank2 = new JButton("%");
btnNewButton_blank2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
IndisplayOpBtn("%");
}
});
panel.add(btnNewButton_blank2);

JButton btnNewButton_blank3 = new JButton("√");
btnNewButton_blank3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
IndisplayOpBtn("√");
}
});
panel.add(btnNewButton_blank3);

JButton btnNewButton_clear = new JButton("\u6E05\u9664");//清除
btnNewButton_clear.setToolTipText("\u6E05\u9664");
btnNewButton_clear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lblNewLabel.setText("");
strnum="";
numflag=opflag=false;
num1=num2=0;
}
});
btnNewButton_clear.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_clear);

JButton btnNewButton_7 = new JButton("7");
btnNewButton_7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayIntBtn("7");
}
});
btnNewButton_7.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_7);

JButton btnNewButton_8 = new JButton("8");
btnNewButton_8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayIntBtn("8");
}
});
btnNewButton_8.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_8);

JButton btnNewButton_9 = new JButton("9");
btnNewButton_9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayIntBtn("9");
}
});
btnNewButton_9.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_9);

JButton btnNewButton_divide = new JButton("/");
btnNewButton_divide.setToolTipText("\u9664");
btnNewButton_divide.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayOpBtn("/");
}
});
btnNewButton_divide.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_divide);

JButton btnNewButton_4 = new JButton("4");
btnNewButton_4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayIntBtn("4");
}
});
btnNewButton_4.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_4);

JButton btnNewButton_5 = new JButton("5");
btnNewButton_5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayIntBtn("5");
}
});
btnNewButton_5.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_5);

JButton btnNewButton_6 = new JButton("6");
btnNewButton_6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayIntBtn("6");
}
});
btnNewButton_6.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_6);

JButton btnNewButton_multiply = new JButton("x");
btnNewButton_multiply.setToolTipText("\u4E58");
btnNewButton_multiply.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayOpBtn("*");
}
});
btnNewButton_multiply.setFont(new Font("Arial", Font.BOLD, 18));
panel.add(btnNewButton_multiply);

JButton btnNewButton_1 = new JButton("1");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayIntBtn("1");
}
});
btnNewButton_1.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_1);

JButton btnNewButton_2 = new JButton("2");
btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayIntBtn("2");
}
});
btnNewButton_2.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_2);

JButton btnNewButton_3 = new JButton("3");
btnNewButton_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayIntBtn("3");
}
});
btnNewButton_3.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_3);

JButton btnNewButton_subtract = new JButton("-");
btnNewButton_subtract.setToolTipText("\u51CF");
btnNewButton_subtract.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayOpBtn("-");
}
});
btnNewButton_subtract.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_subtract);

JButton btnNewButton_dot = new JButton(".");
btnNewButton_dot.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayIntBtn(".");
}
});
btnNewButton_dot.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_dot);

JButton btnNewButton_0 = new JButton("0");
btnNewButton_0.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayIntBtn("0");
}
});
btnNewButton_0.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_0);

JButton btnNewButton_equal = new JButton("=");
btnNewButton_equal.setToolTipText("\u8FD0\u7B97");
btnNewButton_equal.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(opflag==true){
calculator(op);
}
result= new Double(num1).toString();
lblNewLabel.setText(result);
}
});
btnNewButton_equal.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_equal);

JButton btnNewButton_plus = new JButton("+");
btnNewButton_plus.setToolTipText("\u52A0");
btnNewButton_plus.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
displayOpBtn("+");
}
});
btnNewButton_plus.setFont(new Font("宋体", Font.BOLD, 18));
panel.add(btnNewButton_plus);

}

//数字按钮功能实现
public void displayIntBtn(String num){
if(strnum==""&&opflag==false){
lblNewLabel.setText(null);
strnum="";
}
numflag=true; //表示已经输入数字了
strnum+=num; //输入的数字加到存放数字的字符串中
lblNewLabel.setText(strnum);//将输入的数字显示出来
}

//运算符按钮实现
public void displayOpBtn(String commend){

if(opflag==false&&strnum!=null){ //输入第一个数字(不能输入运算符)
lblNewLabel.setText("");
num1=Double.parseDouble(strnum);
}
if(opflag==true&&strnum!=""){ //已输入运算符,第一个数字不为空,输入第二个数字
num2=Double.parseDouble(strnum);
}
numflag=false; //没有输入数字或已输入运算符
lblNewLabel.setText(commend);
opflag=true;
strnum="";
}
//实现开方、百分号
public void IndisplayOpBtn(String commend){

if(opflag==false&&strnum!=null){
lblNewLabel.setText("");
num1=Double.parseDouble(strnum);
}
numflag=false; //没有输入数字或已输入运算符
lblNewLabel.setText(commend);
opflag=true;
strnum="";
}

//实现运算功能
public void calculator(String op){
if(op.equals("+")){
num1=num1+num2;
num2=0;
opflag=false;
strnum="";
}
else if(op.equals("-")){
num1=num1-num2;
num2=0;
opflag=false;
strnum="";
}
else if(op.equals("*")){
num1=num1*num2;
num2=0;
opflag=false;
strnum="";
}
else if(op.equals("/")){
if(num2!=0){
num1=num1/num2;
num2=0;
opflag=false;
strnum="";
}
else
lblNewLabel.setText("ERROR");
}
else if(op.equals("%")){
num1=num1/100;
num2=0;
opflag=false;
strnum="";
}
else {
num1=Math.sqrt(num1);
num2=0;
opflag=false;
strnum="";
}
}
//实现清除功能
public void backspace(String op){
if(strnum!=""&&strnum.length()>0){
strnum=strnum.substring(0, strnum.length()-1);
}
lblNewLabel.setText("");
lblNewLabel.setText(strnum);
}
}
...全文
323 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
anhy 2014-12-24
  • 打赏
  • 举报
回复
输入“=”后直接运算,没有对num2进行赋值
anhy 2014-12-24
  • 打赏
  • 举报
回复
op没有赋值
内容概要:本文介绍了软件定义汽车(SDV)的最佳实践案例,重点围绕基于Vector技术的电子电气(E/E)架构设计与实现。文档展示了高算力计算平台(HPC)、区域控制器(Zone ECU)和车载网络(如CAN、Ethernet)的系统架构布局,并结合AUTOSAR操作系统(Classic/Adaptive)、虚拟化(Hypervisor)和SOA服务设计,构建现代化车载系统。通过vCANdrive平台演示了从开发、测试(SIL/HIL)、到OTA升级的全流程,涵盖传感器、执行器、应用层软件及云端协同的集成方案。同时展示了硬件原型(如树莓派、Triboard)和MICROSAR系列工具链在实际项目中的应用。; 适合人群:从事汽车电子系统开发、车载软件架构设计以及智能网联汽车研发的工程师和技术管理人员,具备一定的嵌入式系统或AUTOSAR基础者更佳。; 使用场景及目标:①理解软件定义汽车的整体架构设计方法;②掌握基于Vector工具链的HPC与区域控制器集成方案;③实现OTA更新、SIL/HIL测试、ETH-CAN通信转换等关键技术验证;④支持智能驾驶(ADAS)与智能座舱(IVI)系统的快速原型开发。; 阅读建议:建议结合Vector相关工具(如PREEvision、CANoe4SW、MICROSAR)进行实践操作,重点关注系统分层设计、通信机制与软件更新流程,同时可参考文档中的硬件连接示意图与信号映射关系进行仿真与实车验证。

58,448

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧