java簡單計算器,java簡單計算器的實現

本文目錄一覽:

如何用java編寫一個簡單的計算器,只要能進行最基本的加減乘除運算就可以了,本人急用,簡單易懂即可,大

簡單的啊,我有個自己編的完美的,不過給你改成簡單的吧。有注釋。

import java.awt.*;

import javax.swing.*;

import javax.swing.border.*;

import java.awt.event.*;

import java.text.*;

public class Calculator extends JFrame implements ActionListener

{

int m=0,i,n=0;

float sum=0,s1,s2,equ;

String v=””;

JPanel delete_main = new JPanel();

JPanel delete = new JPanel();

JPanel buttons = new JPanel();

JTextField text = new JTextField(“0”);

JButton backspace = new JButton(“Backspace”);

JButton c = new JButton(“C”);

JButton ce = new JButton(“CE”);

JButton bt1= new JButton(“1”);

JButton bt2= new JButton(“2”);

JButton bt3= new JButton(“3”);

JButton bt4= new JButton(“+”);

JButton bt5 = new JButton(“4”);

JButton bt6= new JButton(“5”);

JButton bt7= new JButton(“6”);

JButton bt8= new JButton(“-“);

JButton bt9= new JButton(“7”);

JButton bt10= new JButton(“8”);

JButton bt11= new JButton(“9”);

JButton bt12= new JButton(“*”);

JButton bt13= new JButton(“0”);

JButton bt14= new JButton(“.”);

JButton bt15= new JButton(“=”);

JButton bt16= new JButton(“/”);

public Calculator()

{

super(“簡易計算器–超人不會飛榮譽出品”);

delete.setLayout(new GridLayout(1, 3, 15, 15));

delete.add(backspace);

delete.add(c);

delete.add(ce);

delete.setBorder(new LineBorder(delete.getBackground(), 5));//添加邊框

c.addActionListener(this);

ce.addActionListener(this);

backspace.addActionListener(this);

text.setFont(new Font(“宋體”, Font.BOLD +Font.ITALIC, 20));

// 設置顯示字體

text.setBackground(Color.getHSBColor(44, 3, 87));

text.setBorder(new LineBorder(Color.ORANGE, 1));

text.setHorizontalAlignment(SwingConstants.RIGHT); // 設置鼠標靠右

text.setEditable(false); // 屏蔽鍵盤輸入,防止非法字符

delete_main.setLayout(new GridLayout(2, 1, 10, 10));

delete_main.add(text, BorderLayout.NORTH);

delete_main.add(delete, BorderLayout.SOUTH);

buttons.setLayout(new GridLayout(4, 5, 10, 20));

bt1.addActionListener(this); // 為各個按鈕添加事件監聽

buttons.add(bt1);

bt2.addActionListener(this);

buttons.add(bt2);

bt3.addActionListener(this);

buttons.add(bt3);

bt4.addActionListener(this);

buttons.add(bt4);

bt5.addActionListener(this);

buttons.add(bt5);

bt6.addActionListener(this);

buttons.add(bt6);

bt7.addActionListener(this);

buttons.add(bt7);

bt8.addActionListener(this);

buttons.add(bt8);

bt9.addActionListener(this);

buttons.add(bt9);

bt10.addActionListener(this);

buttons.add(bt10);

bt11.addActionListener(this);

buttons.add(bt11);

bt12.addActionListener(this);

buttons.add(bt12);

bt13.addActionListener(this);

buttons.add(bt13);

bt14.addActionListener(this);

buttons.add(bt14);

bt15.addActionListener(this);

buttons.add(bt15);

bt16.addActionListener(this);

buttons.add(bt16);

buttons.setBorder(new LineBorder(delete.getBackground(), 5));//邊框

this.setLayout(new BorderLayout());

this.add(delete_main, BorderLayout.NORTH);

this.add(buttons, BorderLayout.SOUTH);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //添加關閉窗口事件監聽器

pack(); //自動設置窗體大小

setResizable(false); // 設置面板大小不可變

setVisible(true);

Toolkit tk = this.getToolkit();

Dimension de = tk.getScreenSize();

setBounds((de.width – this.getWidth()) / 2,(de.height – this.getHeight()) / 2, this.getWidth(), this.getHeight());

//使之居於屏幕正中央

}

public void actionPerformed(ActionEvent e)

{ //事件響應

//Object source = e.getSource();

if(e.getSource()==backspace) //退格鍵

{

v=v.substring(0,v.length() – 1);

text.setText(v);

}

if(e.getSource()==c||e.getSource()==ce) //清空鍵

{

m=0;

sum=0;

v=””;s1=0;s2=0;i=0;

text.setText(“0”);

}

if(e.getSource()==bt1)

{

if(m==1)

v=””;

v=v+”1″;

text.setText(v);

m=0;n=1;

}

if(e.getSource()==bt2)

{

if(m==1)

v=””;

v=v+”2″;

text.setText(v);

m=0;n=1;

}

if(e.getSource()==bt3)

{

if(m==1)

v=””;

v=v+”3″;

text.setText(v);

m=0;n=1;

}

if(e.getSource()==bt4) // +按鈕

{

if(n==1) //如果按之前按了0~9數字鍵,就運算

{

sum=Float.parseFloat(v);

}

else //如果按之前沒按0~9數字鍵,直接按了運算符,不做任何操作

{

}

i=1;

m=1;n=0;

}

if(e.getSource()==bt5)

{

if(m==1)

v=””;

v=v+”4″;

text.setText(v);

m=0;n=1;

}

if(e.getSource()==bt6)

{

if(m==1)

v=””;

v=v+”5″;

text.setText(v);

m=0;n=1;

}

if(e.getSource()==bt7)

{

if(m==1)

v=””;

v=v+”6″;

text.setText(v);

m=0;n=1;

}

if(e.getSource()==bt8) // -按鈕

{

if(n==1)

{

sum=Float.parseFloat(v);

}

else

{

}

i=2;

m=1;n=0;

}

if(e.getSource()==bt9)

{

if(m==1)

v=””;

v=v+”7″;

text.setText(v);

m=0;n=1;

}

if(e.getSource()==bt10)

{

if(m==1)

v=””;

v=v+”8″;

text.setText(v);

m=0;n=1;

}

if(e.getSource()==bt11)

{

if(m==1)

v=””;

v=v+”9″;

text.setText(v);

m=0;n=1;

}

if(e.getSource()==bt12) //*按鈕

{

if(n==1)

{

sum=Float.parseFloat(v);

}

else

{

}

i=3;

m=1;n=0;

}

if(e.getSource()==bt13)

{

if(m==1)

v=””;

v=v+”0″;

text.setText(v);

m=0;n=1;

}

if(e.getSource()==bt14)

{

}

if(e.getSource()==bt15) //等於按鈕

{

if(m==1) // 如果輸入了+=等非法輸入,不做任何操作

{ }

else

{

s1=sum;

s2=Float.parseFloat(v);

switch(i)

{

case 0: //如果按過數字鍵後直接按等號,直接輸出

equ=Float.parseFloat(v);

break;

case 1:

equ=s1+s2;

break;

case 2:

equ=s1-s2;

break;

case 3:

equ=s1*s2;

break;

case 4:

equ=s1/s2;

break;

}

sum=0;v=””; //清空運算數

v=String.valueOf(equ);

text.setText(String.valueOf(equ));

i=0;

}

}

if(e.getSource()==bt16) // 除按鈕

{

if(n==1)

{

sum=Float.parseFloat(v);

}

else

{

}

i=4;

m=1;n=0;

}

}

public static void main(String[] args)

{

Calculator bt=new Calculator();

}

}

JAVA 編寫計算器 要代碼最簡單的

學java的時候自己編的,很簡單,能夠連續輸入計算式後進行計算

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.text.NumberFormat;

import java.util.ArrayList;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

/**簡易計算器,能夠進行簡單的計算

*

* @see 2008.12.9

*/

public class CalculatorA

implements ActionListener{

private JFrame frame;

private JTextField field;

private JButton[] allButtons;

private JButton clearButton;

// private JButton backButton;

String result=””;//保存結果

StringBuilder sb = new StringBuilder();//保存要進行的計算式

int x = 0; //用來判斷上一次的事件類型

String str = “123+456-789*0.=/”;

ArrayListString arrayList = new ArrayListString();//保存計算式,通過方法進行運算

public CalculatorA(){

frame = new JFrame(“我的計算器v1.1”);

frame.setLocation(300,300);

field = new JTextField(25);

allButtons = new JButton[16];

for(int i=0;iallButtons.length;i++){

allButtons[i]= new JButton(str.substring(i,i+1));

}

clearButton = new JButton(“CLEAR”);

// backButton = new JButton(“——”);

init();

setFondAndColor();

addEventHander();

}

public void init(){

frame.setLayout(new BorderLayout());

JPanel northPanel = new JPanel();

JPanel centerPanel = new JPanel();

JPanel southPanel = new JPanel();

northPanel.setLayout(new FlowLayout());

centerPanel.setLayout(new GridLayout(4,4));

southPanel.setLayout(new FlowLayout());

northPanel.add(field);

for(int i=0;iallButtons.length;i++){

centerPanel.add(allButtons[i]);

}

southPanel.add(clearButton);

//southPanel.add(backButton);

frame.add(northPanel,BorderLayout.NORTH);

frame.add(centerPanel,BorderLayout.CENTER);

frame.add(southPanel,BorderLayout.SOUTH);

}

//設置輸入字體

public void setFondAndColor(){

field.setFont(new Font(“宋體”,Font.BOLD,24));

field.setBackground(new Color(100,200,200));

field.setForeground(Color.RED);

//設置字體從右起始

field.setHorizontalAlignment(JTextField.RIGHT);

}

public void showMi(){

frame.pack();

frame.setResizable(false);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void addEventHander(){

for(int i=0;iallButtons.length;i++){

allButtons[i].addActionListener(this);

}

clearButton.addActionListener(this);

// backButton.addActionListener(this);

}

@Override

public void actionPerformed(ActionEvent e) {

String str = e.getActionCommand();//取得當前事件返回的值

if(“0123456789.”.indexOf(str)!=-1){

if(x == 0){ //當x為0時表示還沒有進行輸入

result=str;

sb.append(str);

field.setText(str);

x = 1;

}

else if(x == 1){

result = result +str;

sb.append(str);

field.setText(result);

x = 1;

}

else if(x == 2){

sb.delete(0,sb.length());

result = result+str;

sb.append(str);

field.setText(result);

x = 1;

}

else if(x == 3){

result = str;

sb.delete(0,sb.length());

arrayList.clear();

field.setText(str);

sb.append(str);

field.setText(str);

x = 1;

}

else if(x == 4){

result =””;

sb.delete(0,sb.length());

arrayList.clear();

result = str;

sb.append(str);

field.setText(str);

x = 1;

}

else{

result = result +str;

sb.append(str);

field.setText(result);

x = 1;

}

}

else if(“+*-/”.indexOf(str)!=-1){

if(x == 0){

field.setText(“”);

x = 2;

}

else if(x == 1){

result = result + str;

arrayList.add(sb.toString());

arrayList.add(str);

sb.append(str);

field.setText(result);

x = 2;

}

else if(x == 2){

x = 2;

}

else if(x == 3){

field.setText(result+str);

arrayList.add(result);

arrayList.add(str);

result = result+str;

x = 2;

}

else if(x == 4){

result =””;

sb.delete(0,sb.length());

arrayList.clear();

x = 2;

}

else{

field.setText(result+str);

arrayList.add(result);

arrayList.add(str);

result = result+str;

x = 2;

}

}

else if(“=”.equals(str)){

if(x == 0){

field.setText(“0”);

arrayList.clear();

result = “0”;

x = 3;

}

else if(x == 1){

try{

arrayList.add(sb.toString());

arrayList = getResult(arrayList);

result = arrayList.get(0);

field.setText(result);

arrayList.clear();

x = 3;

}catch(Exception e1){

field.setText(“數據格式異常”);

x = 0;

}

}

else if(x == 2){

field.setText(“數據格式錯誤…..”);

arrayList.clear();

x = 0;

}

else if(x == 3){

field.setText(result);

x = 3;

}

else if(x == 4){

result =””;

sb.delete(0,sb.length());

arrayList.clear();

x = 3;

}

else {

try{

arrayList.add(sb.toString());

arrayList = getResult(arrayList);

result = arrayList.get(0);

field.setText(result);

arrayList.clear();

x = 3;

}catch(Exception e1){

field.setText(“數據格式異常”);

x = 0;

}

}

}

else if(“CLEAR”.equals(str)){

arrayList.clear();

field.setText(“0”);

arrayList.add(“0”);

x = 4;

}

else{

if(result.length()1){

result = result.substring(0,result.length()-1);

if(sb.length()0){

sb.delete(sb.length()-1,sb.length());

}

else {

sb.delete(0,1);

}

field.setText(result);

x = 5;

}

else{

result = “”;

sb.delete(0,sb.length());

arrayList.clear();

field.setText(“0”);

x = 0;

}

}

}

public static ArrayListString getResult(ArrayListString list){

String res = null;

String[] s = {“/”,”*”,”-“,”+”};

int i=0;

if(list.size()1){

for(;is.length;){

if(s[i].equals(“/”)){

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))/Double.parseDouble(list.get(j+1)));

//本地的數據格式

NumberFormat nf = NumberFormat.getInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

else if(s[i].equals(“*”)){

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))*Double.parseDouble(list.get(j+1)));

NumberFormat nf = NumberFormat.getInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

else if(s[i].equals(“-“)){

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))-Double.parseDouble(list.get(j+1)));

NumberFormat nf = NumberFormat.getNumberInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

else {

for(int j=0;jlist.size();j++){

if(list.get(j).equals(s[i])){

res = Double.toString(Double.parseDouble(list.get(j-1))+Double.parseDouble(list.get(j+1)));

NumberFormat nf = NumberFormat.getInstance();

res = nf.format(Double.parseDouble(res));

res = getChange(res);

list.set(j-1,res);

list.remove(j);

list.remove(j);

getResult(list);

}

}

i++;

}

}

}

return list;

}

//對數字字符串進行排除不必要符號

public static String getChange(String res){

String s_temp = “”;

char[] c = new char[res.length()];

for(int k=0;kc.length;k++){

c[k] = res.charAt(k);

}

for(int k=0;kc.length;k++){

if((c[k]= ‘0’ c[k]= ‘9’)|| c[k] == ‘.’){

s_temp += c[k];

}

}

return s_temp;

}

public static void main(String[] args){

new CalculatorA().showMi();

}

}

求JAVA編寫的 簡易計算器程序,附上注釋

1、首先準備好軟件即eclipse和java,下載安裝完成後打開eclipse。

2、點擊左上角的file 新建一個project。

3、給project取一個名字,其他的選項都是默認然後點擊finish。

4、接下來是新建一個class。

5、在給class取名字的時候注意用英文名的首字母要大寫。完成後點擊finish。

6、這就是開始寫代碼的工作台,將代碼寫在綠字下。

7、這就是第一個hello world程序。

如何用java寫一個簡單的計算器

import java.awt.Button;

import java.awt.Color;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.Panel;

import java.awt.TextField;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class Calculator extends WindowAdapter implements MouseListener {

private String first;

private String second;

private String operator;

private Button zero = new Button(“0”);

private Button one = new Button(“1”);

private Button two = new Button(“2”);

private Button three = new Button(“3”);

private Button four = new Button(“4”);

private Button five = new Button(“5”);

private Button six = new Button(“6”);

private Button seven = new Button(“7”);

private Button eight = new Button(“8”);

private Button nine = new Button(“9”);

private Button decimal = new Button(“.”);

private Button equal = new Button(“=”);

private Button add = new Button(“+”);

private Button sub = new Button(“-“);

private Button mul = new Button(“*”);

private Button div = new Button(“/”);

private TextField input = new TextField();

private Button CE = new Button(“CE”);

private Button DEL = new Button(“Del”);

public static void main(String[] args) {

new Calculator();

}

public Calculator(){

Frame f = new Frame(“Calculator”);

f.add(“North”, input);

Panel keys = new Panel();

f.add(keys, “Center”);

keys.setLayout(new GridLayout(4, 4));

keys.add(seven);

keys.add(eight);

keys.add(nine);

keys.add(add);

keys.add(four);

keys.add(five);

keys.add(six);

keys.add(sub);

keys.add(one);

keys.add(two);

keys.add(three);

keys.add(mul);

keys.add(zero);

keys.add(decimal);

keys.add(equal);

keys.add(div);

zero.addMouseListener(this);

one.addMouseListener(this);

two.addMouseListener(this);

three.addMouseListener(this);

four.addMouseListener(this);

five.addMouseListener(this);

six.addMouseListener(this);

seven.addMouseListener(this);

eight.addMouseListener(this);

nine.addMouseListener(this);

add.addMouseListener(this);

sub.addMouseListener(this);

div.addMouseListener(this);

mul.addMouseListener(this);

equal.addMouseListener(this);

decimal.addMouseListener(this);

Panel addtionalPanel = new Panel();

addtionalPanel.setLayout(new GridLayout(1, 2));

addtionalPanel.add(CE);

addtionalPanel.add(DEL);

CE.setBackground(Color.green);

DEL.setBackground(Color.cyan);

CE.addMouseListener(this);

DEL.addMouseListener(this);

f.add(“South”, addtionalPanel);

f.addWindowListener(this);

f.setVisible(true);

f.setLocation(200, 300);

f.setSize(200, 200);

}

public void windowClosing(WindowEvent e) {

System.exit(0);

}

public void mouseClicked(MouseEvent e) {

Button btn = (Button) e.getSource();

String key = btn.getActionCommand().trim();

if(btn == one || btn == two || btn == three || btn == zero

|| btn == four || btn == five || btn == six

|| btn == seven || btn == eight || btn == nine){

if(isBlank(operator)){

if(isBlank(first)){

first = key;

}else{

first += key;

}

input.setText(first);

}else{

if(isBlank(second)){

second = key;

}else{

second += key;

}

input.setText(second);

}

}else if(btn == decimal){

if(isBlank(operator)){

if(isBlank(first)){

first = “0.”;

input.setText(first);

}else{

if(first.indexOf(“.”) == -1){

first += “.”;

input.setText(first);

}

}

}else{

if(isBlank(second)){

second = “0.”;

input.setText(second);

}else{

if(second.indexOf(“.”) == -1){

second += “.”;

input.setText(second);

}

}

}

}else if(btn == equal){

if(!isBlank(second) !isBlank(first) !isBlank(operator)){

double result = 0.0D;

if(operator.equals(“+”)){

result = Double.parseDouble(first) + Double.parseDouble(second);

}else if(operator.equals(“-“)){

result = Double.parseDouble(first) – Double.parseDouble(second);

}else if(operator.equals(“*”)){

result = Double.parseDouble(first) * Double.parseDouble(second);

}else if(operator.equals(“/”)){

result = Double.parseDouble(first) / Double.parseDouble(second);

}

int value = (int)Math.round(result);

if(value == result){

input.setText(String.valueOf(value));

}else{

input.setText(String.valueOf(result));

}

first = String.valueOf(result);

second = null;

operator = null;

}

}else if(btn == add || btn == sub || btn == div || btn == mul){

if(!isBlank(first)){

if(!isBlank(operator) !isBlank(second)){

if(operator.equals(“+”)){

first = String.valueOf(Double.parseDouble(first) + Double.parseDouble(second));

}else if(operator.equals(“-“)){

first = String.valueOf(Double.parseDouble(first) – Double.parseDouble(second));

}else if(operator.equals(“*”)){

first = String.valueOf(Double.parseDouble(first) * Double.parseDouble(second));

}else if(operator.equals(“/”)){

first = String.valueOf(Double.parseDouble(first) / Double.parseDouble(second));

}

second = null;

}

operator = key;

}

}else if(btn == CE){

first = null;

second = null;

operator = null;

input.setText(null);

}else if(btn == DEL){

if(isBlank(operator)){

if(!isBlank(first)){

first = first.substring(0, first.length() -1);

input.setText(first);

}

}else{

if(!isBlank(second)){

second = second.substring(0, second.length() -1);

input.setText(second);

}

}

}

}

private boolean isBlank(String str){

return str == null || str.trim().equals(“”);

}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

}

用JAVA編寫一個簡單的計算器,要求如下

然後 通過輸入 顯示結果,比如說:

以下是上圖計算器的代碼:

package Computer;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Container;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Stack;

import javax.swing.JApplet;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class Count extends JApplet implements ActionListener

{

/**

*

*/

private static final long serialVersionUID = 1L;

private JTextField textField = new JTextField(“請輸入”);

String operator = “”;//操作

String input = “”;//輸入的 式子

boolean flag =  true;

//  boolean flag1 = true;

//  boolean flag2 = true;

public void init()//覆寫Applet裡邊的init方法

{

Container C = getContentPane();

JButton b[] = new JButton[16];

JPanel panel = new JPanel();

C.add(textField, BorderLayout.NORTH);

C.add(panel,BorderLayout.CENTER);

panel.setLayout(new GridLayout(4, 4,5,5));

String name[]={“7″,”8″,”9″,”+”,”4″,”5″,”6″,”-“,”1″,”2″,”3″,”*”,”0″,”C”,”=”,”/”};//設置 按鈕

for(int i=0;i16;i++)//添加按鈕

{

b[i] = new JButton(name[i]);

b[i].setBackground(new Color(192,192,192));

b[i].setForeground(Color.BLUE);//數字鍵 設置為 藍顏色

if(i%4==3)

b[i].setForeground(Color.RED);

b[i].setFont(new Font(“宋體”,Font.PLAIN,16));//設置字體格式

panel.add(b[i]);

b[i].addActionListener(this);

}

b[13].setForeground(Color.RED);//非數字鍵,即運算鍵設置為紅顏色

b[13].setForeground(Color.RED);

}

public void actionPerformed(ActionEvent e)

{

int cnt = 0;

String actionCommand = e.getActionCommand();

if(actionCommand.equals(“+”)||actionCommand.equals(“-“)||actionCommand.equals(“*”) ||actionCommand.equals(“/”))

input +=” “+actionCommand+” “;//設置輸入,把輸入的樣式改成 需要的樣子

else if(actionCommand.equals(“C”))

input = “”;

else if(actionCommand.equals(“=”))//當監聽到等號時,則處理 input

{

input+= “=”+compute(input);

textField.setText(input);

input=””;

cnt = 1;

}

else

input += actionCommand;//數字為了避免多位數的輸入 不需要加空格

if(cnt==0)

textField.setText(input);

}

private String compute(String input)//即1237 的 樣例

{

String str[];

str = input.split(” “);

StackDouble s = new StackDouble();

double m = Double.parseDouble(str[0]);

s.push(m);

for(int i=1;istr.length;i++)

{

if(i%2==1)

{

if(str[i].compareTo(“+”)==0)

{

double help = Double.parseDouble(str[i+1]);

s.push(help);

}

if(str[i].compareTo(“-“)==0)

{

double help = Double.parseDouble(str[i+1]);

s.push(-help);

}

if(str[i].compareTo(“*”)==0)

{

double help = Double.parseDouble(str[i+1]);

double ans = s.peek();//取出棧頂元素

s.pop();//消棧

ans*=help;

s.push(ans);

}

if(str[i].compareTo(“/”)==0)

{

double help = Double.parseDouble(str[i+1]);

double ans = s.peek();

s.pop();

ans/=help;

s.push(ans);

}

}

}

double ans = 0d;

while(!s.isEmpty())

{

ans+=s.peek();

s.pop();

}

String result = String.valueOf(ans);

return result;

}

public static void main(String args[])

{

JFrame frame = new JFrame(“Count”);

Count applet = new Count();

frame.getContentPane().add(applet, BorderLayout.CENTER);

applet.init();//applet的init方法

applet.start();//線程開始

frame.setSize(350, 400);//設置窗口大小

frame.setVisible(true);//設置窗口可見

}

}

用Java編寫一個簡單的計算器程序

import java.awt.*;

import java.awt.event.*;

public class CalcAppDemo extends Frame{

private TextField t_result;

private Panel p_main; //主面板

private Panel p_num; //數字面板

private Panel p_oper; //操作符面板

private Panel p_show; //顯示面板

private Button b_num[]; //數字按鈕

private Button b_oper[]; //操作符面板

public CalcAppDemo(String title){

setTitle(title);

t_result = new TextField(“0.0”, 21);

p_main = new Panel();

p_num = new Panel();

p_oper = new Panel();

p_show = new Panel();

p_main.setLayout(new BorderLayout());

p_num.setLayout(new GridLayout(4, 3, 1, 1));

p_oper.setLayout(new GridLayout(4, 2, 1, 1));

b_num = new Button[12];

for(int i=0; i9; i++)

{

b_num[i] = new Button(new Integer(i+1).toString());

}

b_num[9] = new Button(“0”);

b_num[10] = new Button(“cls”);

b_num[11] = new Button(“.”);

for(int i=0; i12; i++)

{

p_num.add(b_num[i]);

}

b_oper = new Button[8];

b_oper[0] = new Button(“+”);

b_oper[1] = new Button(“-“);

b_oper[2] = new Button(“*”);

b_oper[3] = new Button(“/”);

b_oper[4] = new Button(“pow”);

b_oper[5] = new Button(“sqrt”);

b_oper[6] = new Button(“+/-“);

b_oper[7] = new Button(“=”);

for(int i=0; i8; i++) //

{

p_oper.add(b_oper[i]);

}

t_result.setEditable(false);

p_show.add(t_result, BorderLayout.NORTH);

p_main.add(p_show, BorderLayout.NORTH);

p_main.add(p_num, BorderLayout.WEST);

p_main.add(p_oper, BorderLayout.EAST);

this.add(p_main, BorderLayout.CENTER);

setSize(400, 400);

setResizable(false);

pack();

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

ButtonListener b1 = new ButtonListener();

for(int i=0; i12; i++)

{

b_num[i].addActionListener(b1);

}

for(int i=0; i8; i++)

{

b_oper[i].addActionListener(b1);

}

}

class ButtonListener implements ActionListener

{

private String lastOp; //存儲上一此操作符

private String strVal; //存儲數字對應的字符串

private double total; //總數

private double number; //存儲新輸入的數

private boolean firsttime; //判斷是否第一次按下的是操作符按鈕

private boolean operatorPressed;//判斷是否已經按過操作符按鈕

ButtonListener()

{

firsttime = true;

strVal = “”;

}

//事件處理器

public void actionPerformed(ActionEvent e)

{

String s = ((Button)e.getSource()).getLabel().trim();

if(Character.isDigit(s.charAt(0)))

{//判斷是操作數還是操作符

handleNumber(s);

}

else

{

calculate(s);

}

}

//判斷是一元操作符還是二元操作符,並根據操作符類型做計算

void calculate(String op)

{

operatorPressed = true;

if(firsttime! isUnary(op))

{

total = getNumberOnDisplay();

firsttime = false;

}

if(isUnary(op))

{

handleUnaryOp(op);

}

else if(lastOp != null)

{

handleBinaryOp(lastOp);

}

if(! isUnary(op))

{

lastOp = op;

}

}

//判斷是否一元操作符

boolean isUnary(String s)

{

return s.equals(“=”)

||s.equals(“cls”)||s.equals(“sqrt”)

||s.equals(“+/-“)||s.equals(“.”);

}

//處理一元操作符

void handleUnaryOp(String op)

{

if(op.equals(“+/-“))

{//

number = negate(getNumberOnDisplay() + “”);

t_result.setText(“”);

t_result.setText(number + “”);

return;

}else if(op.equals(“.”))

{

handleDecPoint();

return;

}else if(op.equals(“sqrt”))

{

number = Math.sqrt(getNumberOnDisplay());

t_result.setText(“”);

t_result.setText(number + “”);

return;

}else if(op.equals(“=”))

{//

if(lastOp!= null !isUnary(lastOp))

{

handleBinaryOp(lastOp);

}

lastOp = null;

firsttime = true;

return;

}else

{

clear();

}

}

//處理二元運算符

void handleBinaryOp(String op)

{

if(op.equals(“+”))

{

total +=number;

}else if(op.equals(“-“))

{

total -=number;

}else if(op.equals(“*”))

{

total *=number;

}else if(op.equals(“/”))

{

try

{

total /=number;

}catch(ArithmeticException ae){}

}else if(op.equals(“pow”))

total = Math.pow(total, number);

//t_result.setText(“”);

lastOp = null;

// strVal = “”;

number = 0;

t_result.setText(total + “”);

}

//該方法用於處理數字按鈕

void handleNumber(String s)

{

if(!operatorPressed)

{

strVal += s;

}else

{

operatorPressed = false;

strVal = s;

}

//

number = new Double(strVal).doubleValue();

t_result.setText(“”);

t_result.setText(strVal);

}

//該方法用於按下”.”按鈕

void handleDecPoint()

{

operatorPressed = false;

//

if(strVal.indexOf(“.”)0)

{

strVal += “.”;

}

t_result.setText(“”);

t_result.setText(strVal);

}

//該方法用於將一個數求反

double negate(String s)

{

operatorPressed = false;

//如果是一個整數,去掉小數點後面的0

if(number == (int)number)

{

s = s.substring(0,s.indexOf(“.”));

}

//如果無”-“增加在該數的前面

if(s.indexOf(“-“)0)

{

strVal = “-” + s;

}

else

{

strVal = s.substring(1);

}

return new Double(strVal).doubleValue();

}

//將顯示框中的值轉換成Double

double getNumberOnDisplay()

{

return new Double(t_result.getText()).doubleValue();

}

//清除屏幕並設置所有的標識

void clear()

{

firsttime = true;

lastOp = null;

strVal = “”;

total = 0;

number = 0;

t_result.setText(“0”);

}

}

public static void main(String[] args) {

CalcAppDemo c = new CalcAppDemo(“簡單的計算器程序”);

c.setVisible(true);

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/239188.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:15
下一篇 2024-12-12 12:15

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論