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);
}
}
...全文
340 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
anhy 2014-12-24
  • 打赏
  • 举报
回复
输入“=”后直接运算,没有对num2进行赋值
anhy 2014-12-24
  • 打赏
  • 举报
回复
op没有赋值
内容概要:本文围绕双侧电源相间短路方向性电流保护的设计展开系统研究,重点探讨了在复杂电力系统中实现可靠继电保护的关键技术。通过构建双侧电源供电系统的等效电路模型,分析了相间短路故障时短路电流的方向特性及其对保护动作的影响,提出了方向性电流保护的配置原则与整定方法。研究采用Simulink搭建完整的仿真平台,对三段式电流保护配合方向元件的工作逻辑进行了建模与验证,详细模拟了不同位置发生相间短路时保护装置的动作行为,确保选择性、灵敏性、速动性和可靠性。报告还深入讨论了功率方向继电器的工作原理,明确了正方向与反方向故障的判据,并通过仿真结果展示了方向闭锁机制的有效性。; 适合人群:适用于电气工程及相关专业本科生、研究生,以及从事电力系统继电保护设计与运维工作的工程技术人员;具备电路理论、电力系统分析基础的学习者更为适宜; 使用场景及目标:①掌握双侧电源系统中方向性电流保护的基本原理与设计流程;②学习利用Simulink进行电力系统故障仿真与保护逻辑验证的方法;③理解三段式电流保护在复杂网络结构中的配合关系与方向判别机制; 阅读建议:建议读者结合电力系统继电保护教材同步学习,重点关注方向元件的动作条件与极性设置,在仿真过程中尝试改变故障位置与过渡电阻,观察保护动作情况,以深化对方向性判据的理解与实际应用能力。
内容概要:本文围绕【SCI复现】电力系统储能调峰、调频模型研究展开,基于Matlab代码实现,深入探讨了储能系统在电力系统中参与调峰与调频的关键技术与优化模型。资源不仅复现了高水平学术论文中的核心算法与仿真流程,还涵盖了储能配置、运行策略、多时间尺度协调调度等关键技术环节,重点解决了高比例可再生能源接入背景下电网的频率稳定与负荷平衡问题。通过构建完整的调峰调频联合优化模型,结合智能优化算法(如遗传算法、粒子群优化等)进行求解,验证了储能系统在提升电网灵活性与运行经济性方面的有效性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、储能控制、电网调度等相关领域的科研人员及研究生,尤其适合致力于SCI/EI论文复现与创新的研究者。; 使用场景及目标:① 复现并深入理解SCI级文献中储能参与调峰调频的建模方法与算法实现;② 掌握Matlab在电力系统动态仿真与优化调度中的实际应用;③ 为撰高水平学术论文、开展课题研究或工程优化提供可靠的技术参考与代码基础。; 阅读建议:建议结合文中提供的Matlab代码逐模块分析,重点关注目标函数构建、约束条件设置及算法求解流程,鼓励在原有模型基础上进行参数调整与方案改进,以深化对储能调控机制的理解并激发创新思路。

58,443

社区成员

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

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