读书人

JAVA简单的计算器代码 不要界面和按钮

发布时间: 2012-12-18 12:43:41 作者: rapoo

求一个JAVA简单的计算器代码 不要界面和按钮的那种
谢谢
[最优解释]
下面是一个简单的程序:


import java.util.*;
public class calc {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("*****************简单计算器****************");
System.out.println("*\t\t\t\t\t*");
System.out.println("* 使用说明: 1.加法 2.减法 3.乘法 4.除法 * 5.退出");
System.out.println("*\t\t\t\t\t*");
System.out.println("*****************************************");

for(int i=0;i<100;i++){
System.out.print("\n请选择运算规则:");
int num = input.nextInt();
if (num == 5) {
break;
}
switch(num){
case 1:
System.out.println("\n******你选择了加法******\n");
System.out.print("请输入第1个加数:");
int jiashu1 = input.nextInt();
System.out.print("请输入第2个加数:");
int jiashu2 = input.nextInt();
System.out.println("运算结果为:" + jiashu1 + " + " + jiashu1 + " = " + (jiashu1 + jiashu2));
break;
case 2:
System.out.println("\n******你选择了减法******\n");
System.out.print("请输入被减数:");
int jianshu1 = input.nextInt();
System.out.print("请输入减数:");
int jianshu2 = input.nextInt();
System.out.println("运算结果为:" + jianshu1 + " - " + jianshu2 + " = " + (jianshu1 - jianshu2));
break;
case 3:
System.out.println("\n******你选择了乘法******\n");
System.out.print("请输入第1个因数:");
int chengfa1 = input.nextInt();
System.out.print("请输入第2个因数:");
int chengfa2 = input.nextInt();
System.out.println("运算结果为:" + chengfa1 + " * " + chengfa2 + " = " + (chengfa1 * chengfa2));
break;
case 4:
System.out.println("\n******你选择了除法******\n");
System.out.print("请输入被除数:");
double chufa1 = input.nextInt();
System.out.print("请输入除数:");
double chufa2 = input.nextInt();
System.out.println("运算结果为:" + chufa1 + " / " + chufa2 + " = " + (chufa1 / chufa2) + " 余 " + (chufa1 % chufa2));
break;
default:
System.out.println("\n你的选择有错,请重新选择!");
break;
}
}
}
}

[其他解释]
引用:
package com.test;

import java.awt.*;
import javax.swing.*;

import java.awt.event.*;

import javax.swing.border.*;

public class Calculator1 extends JFrame implements ActionListener
{
priv……


恩呢,正解啊
[其他解释]
自己想想啊 又不难
[其他解释]
楼上正解,不过有点简单,不能实现连续运算和混合运算。
[其他解释]
输入一个合法的表达式,然后调用ScriptEngine来求值

[其他解释]
要锻炼自己就去找本数据结构的书,看四则运算的实现,还可以使用逆波兰式实现,但是关键是要理解那个算符优先表
[其他解释]
数据结构学堆栈时的一个经典例子,就是讲运算符优先级的!
[其他解释]
package com.test;

import java.awt.*;
import javax.swing.*;

import java.awt.event.*;

import javax.swing.border.*;

public class Calculator1 extends JFrame implements ActionListener
{
private JFrame jf;
private JButton[] allButtons;
private JButton clearButton;
private JButton sinButton;
private JButton cosButton;
private JButton tanButton;
// private JButton cotButton;
private JTextField jtf;
private boolean isNew = true;
private String recentOperation = null;
private String recentNum = null;
public Calculator1()
{

/**
* 设置窗口点击关闭按钮能关闭
*/
jf=new JFrame("计算器1.0:JAVA");
jf.addWindowListener(new WindowAdapter()
{
public void windowClosing(){
System.exit(0);
}
});
// 实例化所有的按钮以及编辑栏
allButtons = new JButton[16];
clearButton = new JButton("DEL");
sinButton = new JButton("sin");
cosButton = new JButton("cos");
tanButton = new JButton("tan");
jtf=new JTextField(25);
jtf.setEditable(false);
// jtf.setHorizontalAlignment(alignment)
//给CanterPanel中的按钮添加标识符
String str="123+456-789*0.=/";
for(int i=0;i<allButtons.length;i++)
{
allButtons[i]=new JButton(str.substring(i,i+1));
}
}
public void init(){
//设置布局
jf.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 GridLayout(1,4));

northPanel.add(jtf);
for(int i=0;i<16;i++){
centerPanel.add(allButtons[i]);
}
southPanel.add(sinButton);
southPanel.add(cosButton);
southPanel.add(tanButton);
//southPanel.add(cotButton);
southPanel.add(clearButton);


jf.add(northPanel,BorderLayout.NORTH);
jf.add(centerPanel,BorderLayout.CENTER);
jf.add(southPanel,BorderLayout.SOUTH);
addEventHandler();
}
//添加事件监听
public void addEventHandler()
{
jtf.addActionListener(this);
for(int i=0;i<allButtons.length;i++)
{
allButtons[i].addActionListener(this);
}
/**
* 给DEL注册


*/
clearButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
Calculator1.this.jtf.setText("");
}
});

/***
* 实现sin,cos,tan 以及 allButton事件驱动按钮
*/
sinButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{

double temp = Math.sin(Double.parseDouble(jtf.getText()));
jtf.setText(String.valueOf(temp));
return;
}
});
cosButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{

double temp = Math.cos(Double.parseDouble(jtf.getText()));
jtf.setText(String.valueOf(temp));
return;
}
});
tanButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{

double temp = Math.tan(Double.parseDouble(jtf.getText()));
jtf.setText(String.valueOf(temp));
return;
}
});
/*cotButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{

double temp =- Double.parseDouble(jtf.getText());
jtf.setText(String.valueOf(temp));
return;
}
});*/
}
//对输入数字的事件处理
public void actionPerformed(ActionEvent e)
{
String s= e.getActionCommand();
if(s.charAt(0)>='0'&&s.charAt(0)<='9')
{
if(!isNew)
jtf.setText(jtf.getText()+s);
else
jtf.setText(s);
isNew = false;

}
/**
* 对“.”的事件处理
*/
else if (s.equals("."))
{
if(jtf.getText().indexOf(".")!=-1)
return;
if(!isNew &&jtf.getText()!="")
jtf.setText(jtf.getText()+".");
else
jtf.setText("0.");
isNew = false;

}
//对"="的事件处理
else if(s.equals("="))
{
equalaction(e);

}
else
{
if((jtf.getText()).equals(""))
return;
if(recentOperation !=null)equalaction(e);
recentOperation = s;
recentNum = jtf.getText();
isNew = true;

}
}
/**
* 对运算符及计算过程的事件处理
* @param e
*/
private void equalaction(ActionEvent e) {
// TODO Auto-generated method stub
if(recentOperation == null


[其他解释]
recentNum==null
[其他解释]

jtf.getText().equals(""))
return;
double last = 0,now = 0;

try
{
last = Double.parseDouble(recentNum);
now = Double.parseDouble(jtf.getText());
}
catch(NumberFormatException en)

{
recentOperation = null;
recentNum = null;
jtf.setText("数据输入不合法");
System.out.println("数据输入不合法");
isNew = true;
return;

}
if(recentOperation.equals("+"))
{
last+=now;

}
if(recentOperation.equals("-"))
{
last-=now;

}
if(recentOperation.equals("*"))
{
last*=now;

}
if(recentOperation.equals("/"))
{
last/=now;

}
jtf.setText(""+last);
recentNum = jtf.getText();
recentOperation=null;
isNew = true;
}


//对CenterPanel设置

public void setFontAndColor(){
Font f=new Font("宋体",Font.BOLD,24);
jtf.setFont(f);
jtf.setBackground(new Color(0x8f,0xa0,0xfb));
for(int i=0;i<16;i++)
{
allButtons[i].setFont(f);
allButtons[i].setForeground(Color.RED);
}
}


public void showMe(){
init();
setFontAndColor();
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args){
new Calculator1().showMe();
}
}




/***
* 下面是第二个程序
*
*
*/

/*************public class Calculator1 extends JFrame implements ActionListener
{

private boolean isNew = true;
private String recentOperation = null;
private String recentNum = null;

private JPanel p1 = new JPanel();
private JPanel p2 = new JPanel();
private JTextField jtf = new JTextField();

private GridLayout gridLayout1 = new GridLayout() ;
private GridBagLayout gridBagLayout1 = new GridBagLayout();
private GridBagLayout gridBagLayout2 = new GridBagLayout();

public void addButton(Container c,String s)
{
JButton b =new JButton(s);
b.setFont(new java.awt.Font("SansSerif",0,12));
b.setForeground(Color.BLUE);
b.setBorder(BorderFactory.createRaisedBevelBorder());
c.add(b);
b.addActionListener( this);


}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

String s= e.getActionCommand();
if(s.charAt(0)>='0'&&s.charAt(0)<='9')
{
if(!isNew)


jtf.setText(jtf.getText()+s);
else
jtf.setText(s);
isNew = false;

}
else if (s.equals("."))
{
if(jtf.getText().indexOf(".")!=-1)
return;
if(!isNew &&jtf.getText()!="")
jtf.setText(jtf.getText()+".");
else
jtf.setText("0.");
isNew = false;

}
else if(s.equals("="))
{
equalaction(e);

}
else
{
if((jtf.getText()).equals(""))
return;
if(recentOperation !=null)equalaction(e);
recentOperation = s;
recentNum = jtf.getText();
isNew = true;

}
}

private void equalaction(ActionEvent e) {
// TODO Auto-generated method stub
if(recentOperation == null
[其他解释]
recentNum==null
[其他解释]

jtf.getText().equals(""))
return;
double last = 0,now = 0;

try
{
last = Double.parseDouble(recentNum);
now = Double.parseDouble(jtf.getText());
}
catch(NumberFormatException en)

{
recentOperation = null;
recentNum = null;
jtf.setText("数据输入不合法");
System.out.println("数据输入不合法");
isNew = true;
return;

}
if(recentOperation.equals("+"))
{
last+=now;

}
if(recentOperation.equals("-"))
{
last-=now;

[其他解释]

package test6;

import java.util.Scanner;

public class Calculator {
public static void main(String[] args){
boolean flag = true;

while(flag == true){
System.out.println("请输入任意两个数");
Scanner sc1 = new Scanner(System.in);
float a = sc1.nextFloat();
float b = sc1.nextFloat();
System.out.println("请输入选择:");
System.out.println("1.加法");
System.out.println("2.减法");
System.out.println("3.乘法");
System.out.println("4.除法");
System.out.println("5.求余");
System.out.println("0.退出");
System.out.print("请输入你的选择:");
Scanner sc = new Scanner(System.in);
int select = sc.nextInt();
if((select < 0)

读书人网 >J2SE开发

热点推荐