import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener
{
private boolean dotExist, operated, equaled; // 帮助运算的布尔变量
private double storedNumber; // 目前的结果
private char lastOperator; // 表示上一运算符
private JTextField operation; // 结果栏
private JButton[] numbers; // 数字
// 构造者
public Calculator()
setTitle("Calculator");
// 初始化变量
dotExist = false; // 表示当前的数是否有小数点
operated = false; // 表示任意运算符是否被按下
equaled = false; // 表示等号是否被按下
storedNumber = 0;
lastOperator = '?';
// 初始化窗口变量
operation = new JTextField("0");
operation.setEditable(false);
numbers = new JButton[10];
for (int i = 0; i 10; i++)
numbers[i] = new JButton("" + i);
dot = new JButton(".");
plus = new JButton("+");
minus = new JButton("-");
multi = new JButton("*");
sqrt = new JButton("√");
equal = new JButton("=");
changePN = new JButton("≡");
clear = new JButton("AC");
// 将窗口物体放入窗口
GridBagLayout layout = new GridBagLayout();
getContentPane().setLayout(layout);
addComponent(layout, numbers[1], 1, 0, 1, 1);
}
// 对按钮进行反应的方法
public void actionPerformed(ActionEvent e)
JButton btn = (JButton)e.getSource();
if (btn == clear)
operation.setText("0");
dotExist = false;
else if (btn == equal)
operate('=');
equaled = true;
else if (btn == plus)
operate('+');
equaled = false;
else if (btn == minus)
operate('-');
else if (btn == multi)
operate('*');
operate('/');
else if (btn == changePN)
operate('p');
else if (btn == sqrt)
operate('s');
else
if (equaled)
if (btn == numbers[i])
if (operation.getText().equals("0"))
operation.setText("" + i);
else if(! operated)
operation.setText(operation.getText() + i);
operated = false;
if (btn == dot ! dotExist)
operation.setText(operation.getText() + ".");
dotExist = true;
// 进行运算的方法
private void operate(char operator)
double currentNumber = Double.valueOf(operation.getText()).doubleValue();
if (lastOperator == '?')
storedNumber = currentNumber;
else if (lastOperator == '+')
storedNumber += currentNumber;
else if (lastOperator == '-')
storedNumber -= currentNumber;
else if (lastOperator == '*')
storedNumber *= currentNumber;
else if (lastOperator == '/')
storedNumber /= currentNumber;
else if (lastOperator == 'p')
storedNumber *= -1;
else if (lastOperator == 's')
storedNumber = Math.sqrt(currentNumber);
else if (lastOperator == '=' equaled)
operation.setText("" + storedNumber);
operated = true;
lastOperator = operator;
// 快捷使用GridBagLayout的方法
private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height)
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 100;
constraints.weighty = 100;
constraints.gridx = col;
constraints.gridy = row;
constraints.gridwidth = width;
constraints.gridheight = height;
layout.setConstraints(component, constraints);
if (component instanceof JButton)
((JButton)component).addActionListener(this);
getContentPane().add(component);
// 主方法初始化并显示窗口
public static void main(String[] args)
Calculator calc = new Calculator();
calc.setVisible(true);
因为.字符串判断内容上是否相同,要使用的是equals函数
修改后的代码
double?result?=?0;
if?(s.equals("*"))?{//字符串判断内容是否一致,要使用equals函数?,
if?(s.equals("/"))?{
if?(s.equals("+"))?{
if?(s.equals("-"))?{
运行
import java.util.Scanner;
public class 四则运算 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入第一个数字:");
int a = sc.nextInt();
System.out.print("请输入运算符号:");
String str = sc.next();
char ch = str.charAt(0);
System.out.print("请输入第二个数字:");
int b = sc.nextInt();
switch(ch)
case '+':
System.out.println(a+"+"+ b + "="+(a+b));
break;
case '-':
System.out.println(a+"-"+ b+ "="+(a-b));
case '*':
System.out.println(a+"*"+ b+ "="+(a*b));
case '/':
if(b==0){
System.out.println("被除数为零,运算无意义!");
else {
System.out.println(a+"/"+ b+ " = "+(a/b));
default:
System.out.println("运算符是无意义字符!");
望采纳~~~~~~~~
import?javax.swing.*;
import?java.awt.*;
import?java.awt.event.*;
public?class?Calculator?extends?JFrame?implements?ActionListener{
bto_jian=new?JButton("-"),bto_0=new?JButton("0"),bto_dian=new?JButton("."),bto_deng=new?JButton("="),bto_jia=new?JButton("+");
bto_0,bto_dian,bto_deng,bto_jia};
private?JTextField?text_double;//?=?new?JTextField("0");
private?String?operator?=?"=";?//当前运算的运算符
private?boolean?firstDigit?=?true;?//?标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字
private?double?resultNum?=?0.0;?//?计算的中间结果
private?boolean?operateValidFlag?=?true;?//判断操作是否合法
public?Calculator()
super("Calculator");
this.setResizable(false);
this.setBackground(Color.orange);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.getContentPane().setLayout(new?BorderLayout());//设置布局
text_double.setHorizontalAlignment(JTextField.RIGHT);//设置水平对齐方式未右对齐
this.getContentPane().add(text_double,BorderLayout.NORTH);//将文本区添加到Content北部
this.getContentPane().add(panel);//添加panel面板
for(int?i=0;ibutton.length;i++)//在面板上添加按钮
panel.add(button[i]);
for(int?i=0;ibutton.length;i++)
button[i].addActionListener(this);//为按钮注册
text_double.addActionListener(this);//
this.setVisible(true);
public?void?actionPerformed(ActionEvent?e)//
String?c=?e.getActionCommand();//返回与此动作相关的命令字符串.
System.out.println("##########command?is?"+c);
if(c.equals("C")){
handleC();???//用户按了"C"键
else?if?(c.equals("CE"))??//?用户按了"CE"键
text_double.setText("0");
handleNumber(c);?//?handlezero(zero);
}?else??//用户按了运算符键
handleOperator(c);
private?void?handleC()??//?初始化计算器的各种值
firstDigit?=?true;
operator?=?"=";
private?void?handleNumber(String?button)?{
if?(firstDigit)//输入的第一个数字
text_double.setText(button);
}?else?if?((button.equals("."))?(text_double.getText().indexOf(".")?0))//输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面
//如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回?-1
text_double.setText(text_double.getText()?+?".");
}?else?if?(!button.equals("."))//?如果输入的不是小数点,则将数字附在结果文本框的后面
text_double.setText(text_double.getText()?+?button);
//?以后输入的肯定不是第一个数字了
firstDigit?=?false;
private?void?handleOperator(String?button)?{
if?(operator.equals("/"))?{
//?除法运算
//?如果当前结果文本框中的值等于0
if?(getNumberFromText()?==?0.0){
//?操作不合法
operateValidFlag?=?false;
text_double.setText("除数不能为零");
}?else?{
resultNum?/=?getNumberFromText();
}?else?if?(operator.equals("+")){
//?加法运算
resultNum?+=?getNumberFromText();
}?else?if?(operator.equals("-")){
//?减法运算
resultNum?-=?getNumberFromText();
}?else?if?(operator.equals("*")){
//?乘法运算
resultNum?*=?getNumberFromText();
}?else?if?(operator.equals("sqrt"))?{
//?平方根运算
if(getNumberFromText()0){
text_double.setText("被开方数不能为负数");}
resultNum?=?Math.sqrt(resultNum);
else?if?(operator.equals("+/-")){
//?正数负数运算
resultNum?=?resultNum?*?(-1);
}?else?if?(operator.equals("=")){
//?赋值运算
resultNum?=?getNumberFromText();
if?(operateValidFlag)?{
//?双精度浮点数的运算
long?t1;
t1?=?(long)?resultNum;
text_double.setText(String.valueOf(t1));
text_double.setText(String.valueOf(resultNum));
operator?=?button;?//运算符等于用户按的按钮
operateValidFlag?=?true;
private?double?getNumberFromText()?//从结果的文本框获取数字
try?{
result?=?Double.valueOf(text_double.getText()).doubleValue();?//?ValueOf()返回表示指定的?double?值的?Double?实例
}?catch?(NumberFormatException?e){
return?result;
public?static?void?main(final?String[]?args)?{
new?Calculator();
使用BigDecimal并且一定要用String来够造.
实现方法如下:
import java.math.BigDecimal;
/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 确的浮点数运算,包括加减乘除和四舍五入.
*/
public class Arith{
//默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
//这个类不能实例化
private Arith(){
* 提供精确的加法运算.
* @param v1 被加数
* @return 两个参数的和
BigDecimal b1 = new BigDecimal(Double.toString(v1));
* 提供精确的减法运算.
* @param v1 被减数
* @return 两个参数的差
* 提供精确的乘法运算.
* @param v1 被乘数
* @return 两个参数的积
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入.
* @param v1 被除数
* @return 两个参数的商
* 提供(相对)精确的除法运算.当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入.
* @param scale 表示表示需要精确到小数点以后几位.
if(scale0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
* 提供精确的小数位四舍五入处理.
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
public static double round(double v,int scale){
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
};
用Java编写的实现加减乘除的程序如下
import?java.awt.BorderLayout;
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
import?javax.swing.JButton;
import?javax.swing.JComboBox;
import?javax.swing.JFrame;
import?javax.swing.JLabel;
import?javax.swing.JOptionPane;
import?javax.swing.JPanel;
import?javax.swing.JTextField;
JLabel?jl1=new?JLabel("第一个数");
String?a[]={"+","-","*","/"};
JComboBoxString?jcb=new?JComboBoxString(a);
JButton?jb1=new?JButton("计算");
JPanel?jp=new?JPanel();
Calculator(){
setTitle("计算器");
jb1.addActionListener(this);
jp.setLayout(null);
add(jp,BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
public?static?void?main(String[]?args)?{
public?void?actionPerformed(ActionEvent?ae)?{
if(ae.getSource()==jb1){
String?c=((String)?jcb.getSelectedItem()).trim();
if(jtf1.getText().trim().equals("")){
JOptionPane.showMessageDialog(this,?"第一个数不能为空");
jtf1.requestFocus();
return;
JOptionPane.showMessageDialog(this,?"第二个数不能为空");
double?num1=Double.parseDouble(jtf1.getText().trim());
switch(c){
case?"/":
JOptionPane.showMessageDialog(this,?"除数不能为0");
}else{
System.exit(0);
运行结果
以上就是土嘎嘎小编为大家整理的java加减乘除程序代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!