该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
那个计算器正负号的功能实现代码不太会写,有哪位大婶帮帮忙啊,思路好像是统计按钮的次数,奇数为负,偶数为正,但是具体我不会啊,求救!
写好的代码如下:
package com.tarena.day02;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Demo00 implements ActionListener{
private JTextField jtf=new JTextField(20);//文本框
private boolean append=false;
private String s1="0";
private String s2;
private String operator="+";
public Demo00(){
//构造方法在创建类的对象时调用
String[] st={"BK","CE","C","+",
"7","8","9","-",
"4","5","6","*",
"1","2","3","/",
"0","+/-",".","="};
Font font=new Font("行草", Font.BOLD, 20);//创建字体
jtf.setFont(font);
jtf.setEditable(false);//不可编辑文本框
JFrame jf=new JFrame("我的计算器");//框架
JPanel jp=new JPanel();//面板
jp.setLayout(new GridLayout(5,4,5,4));//网格布局,后两个是指横间隔,竖间隔距离
for(int i=0;i<20;i++){
//创建按钮
JButton button=new JButton(st[i]);
button.setFont(font);//设置字体
jp.add(button);
button.addActionListener(this);//绑定监听
}
jf.add(jtf,BorderLayout.NORTH);
jf.add(jp);
jf.setSize(400, 300);
jf.setLocation(500, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args){
new Demo00();
}
public void actionPerformed(ActionEvent e) {
String comm=e.getActionCommand();
if("0123456789".indexOf(comm)!=-1){
//执行数字操作
if(append){
//表示是追加
String temp= jtf.getText();
jtf.setText(temp+comm);
}else{
jtf.setText(comm);
append=true;
}
}else if("+-*/".indexOf(comm)!=-1){
//执行操作符操作
s1=jtf.getText();
operator=comm;//获取操作符
append=false;//表示覆盖
}else if(".".equals(comm)){
//执行小数点操作
String temp=jtf.getText();
if(temp.indexOf(".")==-1){
jtf.setText(temp+".");
append=true;
}//判断有没有小数点
}else if("=".equals(comm)){
s2=jtf.getText();
double d1=Double.parseDouble(s1);
double d2=Double.parseDouble(s2);
double d3=0.0;
if("+".equals(operator)){
d3=d1+d2;
}else if("-".equals(operator)){
d3=d1-d2;
}else if("*".equals(operator)){
d3=d1*d2;
}else{
d3=d1/d2;
}
String result=d3+"";//类型转换
jtf.setText(result);
append=false;
}else if("+/-".equals(comm)){
String temp=jtf.getText();
double x=Double.parseDouble(temp);
//double t=Double.parseDouble(temp);
//t=temp*-1;
//jtf.setText(temp*-1);
jtf.setText("-"+temp);
}else if("BK".equals(comm)){
String temp=jtf.getText();
if(temp.length()>1){
String str=temp.substring(0, temp.length()-1);//截取下标
jtf.setText(str);
}else{
jtf.setText("0");
append=false;
}
}else if("CE".equals(comm)||"C".equals(comm)){
jtf.setText("0");
append=false;
}
}
}