java 计算器 正负号转换_【计算器正负号】一个小程序,有点问题

本文介绍了一个简单的计算器应用程序的设计与实现过程,重点讨论了如何通过按钮点击次数来切换数值的正负号功能。该计算器使用Java语言编写,并利用Swing库创建图形用户界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

那个计算器正负号的功能实现代码不太会写,有哪位大婶帮帮忙啊,思路好像是统计按钮的次数,奇数为负,偶数为正,但是具体我不会啊,求救!

96d7ba0217d2ee9ac74890a9788d8e2b.png写好的代码如下:

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;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值