首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

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

求一个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) 

热点排行