用面向对象程序设计方法设计一个简单的计算器程序,该程序能完成简单的整数的加减乘除运算:

其输入运行如下:c> java calc 20 + 8 C:> 20 + 8 = 28

java计算器
001import java.awt.event.ActionEvent;
002import java.awt.event.ActionListener; 003import javax.swing.*; 004import java.awt.*; 005import java.math.BigDecimal; 006import java.math.MathContext; 007import java.math.RoundingMode; 008import java.awt.Color; 009 010/** 011 * java版计算器 012 */013public class Calculator extends JFrame { 014 final int WIN_W = 250, WIN_H = 250; 015 JPanel myPanel, panelSuper; 016 017 public Calculator() { 018 019 // 主面板 020 panelSuper = new JPanel(); 021 panelSuper.setLayout(null); 022 023 // 设置窗口位置 024 double width = Toolkit.getDefaultToolkit().getScreenSize().width; 025 double height = Toolkit.getDefaultToolkit().getScreenSize().height; 026 this.setBounds((int) (width - WIN_W) / 2, (int) (height - WIN_H) / 2, 027 WIN_W, WIN_H); 028 029 // 窗口配置 030 this.setTitle("java版计算器"); 031 this.validate(); 032 this.setResizable(false); 033 this.setVisible(true); 034 this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); 035 036 // 添加计算器按钮面板 037 myPanel = new MyPanel(); 038 this.add(myPanel, BorderLayout.CENTER); 039 040 } 041 042 public static void main(String[] args) { 043 new Calculator(); 044 } 045 046 /** 047 * 计算器按钮面板类 048 */049 class MyPanel extends JPanel implements ActionListener { 050 JButton button1, button2, button3, button4, button5, button6, button7, 051 button8, button9, button0, buttonJia, buttonJian, buttonCheng, 052 buttonChu, buttonDeng, buttonDian, buttonC, buttonDel, 053 buttonZF, buttonGH; 054 JTextField jTextField; // 计算器显示屏 055 char oper; // 操作符 056 String key, allKey = "1234567890.±del", jjccKey = "+-*/"; 057 BigDecimal d1, d2; 058 boolean first; 059 060 public MyPanel() { 061 062 // 设置布局 063 this.setLayout(new FlowLayout(FlowLayout.LEFT, 4, 5)); 064 065 // 计算器显示屏 066 jTextField = new JTextField(21); 067 jTextField.setHorizontalAlignment(JTextField.RIGHT); 068 jTextField.setEditable(false); 069 jTextField.setBackground(new Color(255, 255, 255)); 070 jTextField.setText("0"); 071 this.add(jTextField); 072 073 // 计算器按钮 074 button1 = new JButton("1"); 075 button2 = new JButton("2"); 076 button3 = new JButton("3"); 077 button4 = new JButton("4"); 078 button5 = new JButton("5"); 079 button6 = new JButton("6"); 080 button7 = new JButton("7"); 081 button8 = new JButton("8"); 082 button9 = new JButton("9"); 083 button0 = new JButton("0"); 084 buttonJia = new JButton("+"); 085 buttonJian = new JButton("-"); 086 buttonCheng = new JButton("*"); 087 buttonChu = new JButton("/"); 088 buttonDeng = new JButton("="); 089 buttonDian = new JButton("."); 090 buttonDel = new JButton("del"); 091 buttonC = new JButton("c"); 092 buttonZF = new JButton("±"); 093 buttonGH = new JButton("√"); 094 button1.setPreferredSize(new Dimension(55, 30)); 095 button2.setPreferredSize(new Dimension(55, 30)); 096 button3.setPreferredSize(new Dimension(55, 30)); 097 button4.setPreferredSize(new Dimension(55, 30)); 098 button5.setPreferredSize(new Dimension(55, 30)); .............................. yuncode.net/code/c_505aad36d50a25 完整代码
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-22
注意:类名开头应该大写(以下是参考代码,因为除法的整除感觉怪怪的,所以我让它可以运算浮点类型了,如要修改,后边有说明)

import java.util.Scanner;
public class Calc {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in).useDelimiter("\\r\\n");
String s=sc.next();
sc.close();
String[] symbol={"[+]","[-]","[*]","[/]"};
String[] a = null;
//
int i=0;float m=0,n=0;
while(i++<4&&(a=s.split(symbol[i-1])).length==1){}
if(i<=4){
m=Float.parseFloat(a[0]);
n=Float.parseFloat(a[1]);
}
System.out.print(s+"="+(i==1?m+n:i==2?m-n:i==3?m*n:i==4?m/n:"非法输入"));
//
}
}

==========
如果你希望仅仅是整数的运算,可以把上边// ****//之间的代码改为:

int i=0,m=0,n=0;
while(i++<4&&(a=s.split(symbol[i-1])).length==1){}
if(i<=4){
m=Integer.parseInt(a[0]);
n=Integer.parseInt(a[1]);
}
System.out.print(s+"="+(i==1?m+n:i==2?m-n:i==3?m*n:i==4?m/(float)n:"非法输入"));

运行结果:
相似回答