JAVA计算器源码
来源:互联网 发布:大数据与虚拟现实结合 编辑:程序博客网 时间:2024/05/01 04:31
import java.awt.BorderLayout;//做两个控件之间的间隙的
import java.awt.Color;
import java.awt.GridBagLayout;//准备做网格用的
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.GridLayout;//把中间容器设置为几行几式
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.color.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class jisuanji extends JFrame implements ActionListener{
//---------------菜单项-------------------------------------
JMenuBar bar=new JMenuBar();//菜单项
JMenu JMenu_bj=new JMenu("编辑");//三个主菜单
JMenu JMenu_ck=new JMenu("查看");
JMenu JMenu_bz=new JMenu("帮助");
//---------------------------------------------------------
JMenuItem JMenuItem_fz=new JMenuItem("复制");
JMenuItem JMenuItem_zt=new JMenuItem("粘贴");
JMenuItem JMenuItem_bz=new JMenuItem("标准型");
JMenuItem JMenuItem_kx=new JMenuItem("科学型");
JMenuItem JMenuItem_bzzt=new JMenuItem("帮助主题");
JMenuItem JMenuItem_gy=new JMenuItem("关于计算器");
//-------------------------------------------------------------
JPanel JPanel_west=new JPanel();
//-----------------------------------------------------------
String []s2=new String[]{"","MC","MR","MS","M+"};
//---------------------------------------
JPanel JPanel_center=new JPanel();//准备做为中间的容器,会再次进行分解
JPanel JPanel_north2=new JPanel();
JPanel JPanel_center2=new JPanel();
//---------------------------------------
String []s1=new String[]{"Backspace","CE","C"};
JTextField JTextField_user=new JTextField(30);
public jisuanji()
{
super("xjh_计算器");
jmenu();
this.setLayout(new BorderLayout(5,5));//间隙
text_north();
west_JButton();
center2_njb();
}
public void jmenu()
{
this.setJMenuBar(bar);//把菜单项添加到窗体上
bar.add(JMenu_bj);//把三个主菜单添加到菜单项上
bar.add(JMenu_ck);
bar.add(JMenu_bz);
JMenu_bj.add(JMenuItem_fz);//把子菜单项添加到主菜单里面
JMenu_bj.add(JMenuItem_zt);
JMenu_ck.add(JMenuItem_bz);
JMenu_ck.add(JMenuItem_kx);
JMenu_bz.add(JMenuItem_bzzt);
JMenu_bz.add(JMenuItem_gy);
}
//在窗体最上面添加个TextField
public void text_north()
{
this.add(JTextField_user,BorderLayout.NORTH);
JTextField_user.setHorizontalAlignment(JTextField_user.RIGHT);//设置光标在右边
JTextField_user.setText("0");
JTextField_user.setEditable(false);
}
//在窗体左边添加JButton
public void west_JButton()
{
this.getContentPane().add(JPanel_west,BorderLayout.WEST );//在西边添加个中间容器
JPanel_west.setLayout(new GridLayout(5,1,5,5));//分成四行一列,(5,5)的间隔
for(int i=0;i<s2.length;i++){
JButton j2=new JButton(s2[i]);
j2.addActionListener(this);
j2.setForeground(Color.red);
JPanel_west.add(j2);
}
}
//添加个CENTER中间容器
//把CENTER中间容器当成一个整体,又把它分为NORTH2和CENTER2的中间容器
public void center2_njb()
{
this.getContentPane().add(JPanel_center,BorderLayout.CENTER);//设置中间部分为中间容器,方向为CENTER
JPanel_center.setLayout(new BorderLayout(5,5));//先把中间容器划分为5*5的网格,再次对他进行划分
JPanel_center.add(JPanel_north2,BorderLayout.NORTH);//在NORTH那又放了一个中间容器
JPanel_north2.setLayout(new GridLayout(1,3,5,5));//设置NORTH那为一行三列显示控件。间隙为5*5
for(int i=0;i<s1.length;i++){
JButton j=new JButton(s1[i]);
j.addActionListener(this);
j.setForeground(Color.red);
JPanel_north2.add(j);
}
//----------------------------------------
JPanel_center.add(JPanel_center2,BorderLayout.CENTER);////在CENTER那又放了一个中间容器
JPanel_center2.setLayout(new GridLayout(4,5,5,5));//设置CENTER那为四行五列显示控件。间隙为5*5
String [][] str=new String[][]{{"7","8","9","/","sqrt"},{"4","5","6","*","%"},{"1","2","3","-","1/x"},{"0","+/-",".","+","="}};
for(int i=0;i<4;i++){
for(int j=0;j<5;j++){
JButton jb=new JButton(str[i][j]);
jb.addActionListener(this);
jb.setForeground(Color.blue);
if((j>0)&(j%3==0)){
jb.setForeground(Color.red );
}
if(i==3&j==4){
jb.setForeground(Color.red );
}
JPanel_center2.add(jb);
}
}
}
//变量实现保存
private String firstNum="";
private String operation="=";
private boolean flag=true;//如果第一次输入清空Text的值,重新输入你的值。=》为FALSE,实现数据的APPEND
//Wwhen true false
//true:第一次用的时候,输入数字后=》false
//当按过+-*/后。false-----true
public void actionPerformed(ActionEvent e) {
// TODO 自动生成方法存根
String target=e.getActionCommand();//获取当前按的按钮的TEXT值。
if("Backspace".equals(target))
{
//最后一个数退后时,个位数为0,再退还是0;
if(JTextField_user.getText().length()>1)
{
//for(int i=JTextField_user.getText().length()-1;i>1;i--)
//{
StringBuffer buffer=new StringBuffer(JTextField_user.getText());
buffer.delete(JTextField_user.getText().length()-1, JTextField_user.getText().length());
JTextField_user.setText(buffer.toString());
//}
}
else
{
JTextField_user.setText("0");
}
flag=true;
}
if("+/-".equals(target))
{
if(Integer.parseInt(JTextField_user.getText())>0)
{
JTextField_user.setText(String.valueOf("-"+(Integer.parseInt(JTextField_user.getText()))));
}
else
{
//Math.abs()求绝对值
JTextField_user.setText(String.valueOf(Math.abs(Integer.parseInt(JTextField_user.getText()))));
}
}
if("1/x".equals(target))
{
if(Integer.parseInt(JTextField_user.getText())!=0)
{
if(Integer.parseInt(JTextField_user.getText())==1)
{
JTextField_user.setText(String.valueOf(1/(Integer.parseInt(JTextField_user.getText()))));
}
else
{
JTextField_user.setText(String.valueOf(1/(Double.parseDouble(JTextField_user.getText()))));
}
}
else
{
System.out.println("错误: 分母不能为0!");
}
flag=true;
}
if("C".equals(target))
{
firstNum="";
JTextField_user.setText("0");
flag=true;
}
if("CE".equals(target))
{
JTextField_user.setText("0");
flag=true;
}
if("sqrt".equals(target))
{
if(Integer.parseInt(JTextField_user.getText())>0)
{
if(Integer.parseInt(JTextField_user.getText())==1)
{
JTextField_user.setText(String.valueOf(1/(Integer.parseInt(JTextField_user.getText()))));
}
else
{
JTextField_user.setText(String.valueOf(Math.sqrt(Integer.parseInt(JTextField_user.getText()))));
}
}
else
{
System.out.println("错误:根号内的值要大于0!");
}
flag=true;
}
if("=".equals(target)){
if(firstNum.indexOf(".")>=0||JTextField_user.getText().indexOf(".")>=0)
{
//Integer.parseInt();
//Double.parseDou();
double f=Double.parseDouble(firstNum);
double two=Double.parseDouble(JTextField_user.getText());
double sum=0;
if(operation.equals("+")){
sum=f+two;
JTextField_user.setText(String.valueOf(sum));
firstNum=String.valueOf(sum);
}
else if(operation.equals("-")){
sum=f-two;
JTextField_user.setText(String.valueOf(sum));
firstNum=String.valueOf(sum);
}
else if(operation.equals("*")){
sum=f*two;
JTextField_user.setText(String.valueOf(sum));
firstNum=String.valueOf(sum);
}
else if(operation.equals("/")){
sum=f/two;
JTextField_user.setText(String.valueOf(sum));
firstNum=String.valueOf(sum);
}
else if(operation.equals("%"))
{
int si;
si=(int) (f%two);
JTextField_user.setText(String.valueOf(si));
firstNum=String.valueOf(sum);
}
}
else
{
int f2 = Integer.parseInt(firstNum);
int two2= Integer.parseInt(JTextField_user.getText());
int sum2=0;
if (operation.equals("+"))
{
sum2=f2+two2;
JTextField_user.setText(String.valueOf(sum2));
firstNum=String.valueOf(sum2);
}
else if (operation.equals("-"))
{
sum2=f2-two2;
JTextField_user.setText(String.valueOf(sum2));
firstNum=String.valueOf(sum2);
}
else if (operation.equals("*"))
{
sum2=f2*two2;
JTextField_user.setText(String.valueOf(sum2));
firstNum=String.valueOf(sum2);
}
else if (operation.equals("/"))
{
double f3=f2;
double two3=two2;
double sum3=f3/two3 ;
JTextField_user.setText(String.valueOf(sum3));
firstNum=String.valueOf(sum2);
}
else if(operation.equals("%"))
{
sum2=f2%two2;
JTextField_user.setText(String.valueOf(sum2));
firstNum=String.valueOf(sum2);
}
}
firstNum="0";
flag=true;
}
if("+-*/%".indexOf(target)>=0){
//第一:operation实现操作符的保存
//第二:保存第一个数
//第三:flag=true;
operation=target;
firstNum=JTextField_user.getText(); //第二:保存第一个数
flag=true;
}
//当得到数字和小数点后的工作
if("0123456789.".indexOf(target)>=0){
if(flag==true)
{
//JTextField_user.setText("0");
if (target.equals("."))
{
flag= false;
}
else if("0".equals(target))
{
JTextField_user.setText("0");
}
else
{
JTextField_user.setText("");
StringBuffer buffer = new StringBuffer (JTextField_user.getText());
//JTextField_user.setText(target);
JTextField_user.setText(buffer.toString());
flag= false;
}
}
if(flag==false){
StringBuffer buffer=new StringBuffer(JTextField_user.getText());
//当小数存在了,以及按了小数点就什么事都不干。
//target.equals(".")就是判断如果按的不是点就继续添加
if(buffer.toString().indexOf(".")>=0&&target.equals(".")){
}
else
{
buffer.append(target);
}
/*if(buffer.toString().substring(0, 1).equals("0")&&buffer.length()>1&&buffer.toString().substring(1,2)!=".")
{
String str="";
str=buffer.toString().substring(0, 1);
}*/
JTextField_user.setText(buffer.toString());
}
}
}
}
import java.awt.Color;
import java.awt.GridBagLayout;//准备做网格用的
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.GridLayout;//把中间容器设置为几行几式
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.color.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class jisuanji extends JFrame implements ActionListener{
//---------------菜单项-------------------------------------
JMenuBar bar=new JMenuBar();//菜单项
JMenu JMenu_bj=new JMenu("编辑");//三个主菜单
JMenu JMenu_ck=new JMenu("查看");
JMenu JMenu_bz=new JMenu("帮助");
//---------------------------------------------------------
JMenuItem JMenuItem_fz=new JMenuItem("复制");
JMenuItem JMenuItem_zt=new JMenuItem("粘贴");
JMenuItem JMenuItem_bz=new JMenuItem("标准型");
JMenuItem JMenuItem_kx=new JMenuItem("科学型");
JMenuItem JMenuItem_bzzt=new JMenuItem("帮助主题");
JMenuItem JMenuItem_gy=new JMenuItem("关于计算器");
//-------------------------------------------------------------
JPanel JPanel_west=new JPanel();
//-----------------------------------------------------------
String []s2=new String[]{"","MC","MR","MS","M+"};
//---------------------------------------
JPanel JPanel_center=new JPanel();//准备做为中间的容器,会再次进行分解
JPanel JPanel_north2=new JPanel();
JPanel JPanel_center2=new JPanel();
//---------------------------------------
String []s1=new String[]{"Backspace","CE","C"};
JTextField JTextField_user=new JTextField(30);
public jisuanji()
{
super("xjh_计算器");
jmenu();
this.setLayout(new BorderLayout(5,5));//间隙
text_north();
west_JButton();
center2_njb();
}
public void jmenu()
{
this.setJMenuBar(bar);//把菜单项添加到窗体上
bar.add(JMenu_bj);//把三个主菜单添加到菜单项上
bar.add(JMenu_ck);
bar.add(JMenu_bz);
JMenu_bj.add(JMenuItem_fz);//把子菜单项添加到主菜单里面
JMenu_bj.add(JMenuItem_zt);
JMenu_ck.add(JMenuItem_bz);
JMenu_ck.add(JMenuItem_kx);
JMenu_bz.add(JMenuItem_bzzt);
JMenu_bz.add(JMenuItem_gy);
}
//在窗体最上面添加个TextField
public void text_north()
{
this.add(JTextField_user,BorderLayout.NORTH);
JTextField_user.setHorizontalAlignment(JTextField_user.RIGHT);//设置光标在右边
JTextField_user.setText("0");
JTextField_user.setEditable(false);
}
//在窗体左边添加JButton
public void west_JButton()
{
this.getContentPane().add(JPanel_west,BorderLayout.WEST );//在西边添加个中间容器
JPanel_west.setLayout(new GridLayout(5,1,5,5));//分成四行一列,(5,5)的间隔
for(int i=0;i<s2.length;i++){
JButton j2=new JButton(s2[i]);
j2.addActionListener(this);
j2.setForeground(Color.red);
JPanel_west.add(j2);
}
}
//添加个CENTER中间容器
//把CENTER中间容器当成一个整体,又把它分为NORTH2和CENTER2的中间容器
public void center2_njb()
{
this.getContentPane().add(JPanel_center,BorderLayout.CENTER);//设置中间部分为中间容器,方向为CENTER
JPanel_center.setLayout(new BorderLayout(5,5));//先把中间容器划分为5*5的网格,再次对他进行划分
JPanel_center.add(JPanel_north2,BorderLayout.NORTH);//在NORTH那又放了一个中间容器
JPanel_north2.setLayout(new GridLayout(1,3,5,5));//设置NORTH那为一行三列显示控件。间隙为5*5
for(int i=0;i<s1.length;i++){
JButton j=new JButton(s1[i]);
j.addActionListener(this);
j.setForeground(Color.red);
JPanel_north2.add(j);
}
//----------------------------------------
JPanel_center.add(JPanel_center2,BorderLayout.CENTER);////在CENTER那又放了一个中间容器
JPanel_center2.setLayout(new GridLayout(4,5,5,5));//设置CENTER那为四行五列显示控件。间隙为5*5
String [][] str=new String[][]{{"7","8","9","/","sqrt"},{"4","5","6","*","%"},{"1","2","3","-","1/x"},{"0","+/-",".","+","="}};
for(int i=0;i<4;i++){
for(int j=0;j<5;j++){
JButton jb=new JButton(str[i][j]);
jb.addActionListener(this);
jb.setForeground(Color.blue);
if((j>0)&(j%3==0)){
jb.setForeground(Color.red );
}
if(i==3&j==4){
jb.setForeground(Color.red );
}
JPanel_center2.add(jb);
}
}
}
//变量实现保存
private String firstNum="";
private String operation="=";
private boolean flag=true;//如果第一次输入清空Text的值,重新输入你的值。=》为FALSE,实现数据的APPEND
//Wwhen true false
//true:第一次用的时候,输入数字后=》false
//当按过+-*/后。false-----true
public void actionPerformed(ActionEvent e) {
// TODO 自动生成方法存根
String target=e.getActionCommand();//获取当前按的按钮的TEXT值。
if("Backspace".equals(target))
{
//最后一个数退后时,个位数为0,再退还是0;
if(JTextField_user.getText().length()>1)
{
//for(int i=JTextField_user.getText().length()-1;i>1;i--)
//{
StringBuffer buffer=new StringBuffer(JTextField_user.getText());
buffer.delete(JTextField_user.getText().length()-1, JTextField_user.getText().length());
JTextField_user.setText(buffer.toString());
//}
}
else
{
JTextField_user.setText("0");
}
flag=true;
}
if("+/-".equals(target))
{
if(Integer.parseInt(JTextField_user.getText())>0)
{
JTextField_user.setText(String.valueOf("-"+(Integer.parseInt(JTextField_user.getText()))));
}
else
{
//Math.abs()求绝对值
JTextField_user.setText(String.valueOf(Math.abs(Integer.parseInt(JTextField_user.getText()))));
}
}
if("1/x".equals(target))
{
if(Integer.parseInt(JTextField_user.getText())!=0)
{
if(Integer.parseInt(JTextField_user.getText())==1)
{
JTextField_user.setText(String.valueOf(1/(Integer.parseInt(JTextField_user.getText()))));
}
else
{
JTextField_user.setText(String.valueOf(1/(Double.parseDouble(JTextField_user.getText()))));
}
}
else
{
System.out.println("错误: 分母不能为0!");
}
flag=true;
}
if("C".equals(target))
{
firstNum="";
JTextField_user.setText("0");
flag=true;
}
if("CE".equals(target))
{
JTextField_user.setText("0");
flag=true;
}
if("sqrt".equals(target))
{
if(Integer.parseInt(JTextField_user.getText())>0)
{
if(Integer.parseInt(JTextField_user.getText())==1)
{
JTextField_user.setText(String.valueOf(1/(Integer.parseInt(JTextField_user.getText()))));
}
else
{
JTextField_user.setText(String.valueOf(Math.sqrt(Integer.parseInt(JTextField_user.getText()))));
}
}
else
{
System.out.println("错误:根号内的值要大于0!");
}
flag=true;
}
if("=".equals(target)){
if(firstNum.indexOf(".")>=0||JTextField_user.getText().indexOf(".")>=0)
{
//Integer.parseInt();
//Double.parseDou();
double f=Double.parseDouble(firstNum);
double two=Double.parseDouble(JTextField_user.getText());
double sum=0;
if(operation.equals("+")){
sum=f+two;
JTextField_user.setText(String.valueOf(sum));
firstNum=String.valueOf(sum);
}
else if(operation.equals("-")){
sum=f-two;
JTextField_user.setText(String.valueOf(sum));
firstNum=String.valueOf(sum);
}
else if(operation.equals("*")){
sum=f*two;
JTextField_user.setText(String.valueOf(sum));
firstNum=String.valueOf(sum);
}
else if(operation.equals("/")){
sum=f/two;
JTextField_user.setText(String.valueOf(sum));
firstNum=String.valueOf(sum);
}
else if(operation.equals("%"))
{
int si;
si=(int) (f%two);
JTextField_user.setText(String.valueOf(si));
firstNum=String.valueOf(sum);
}
}
else
{
int f2 = Integer.parseInt(firstNum);
int two2= Integer.parseInt(JTextField_user.getText());
int sum2=0;
if (operation.equals("+"))
{
sum2=f2+two2;
JTextField_user.setText(String.valueOf(sum2));
firstNum=String.valueOf(sum2);
}
else if (operation.equals("-"))
{
sum2=f2-two2;
JTextField_user.setText(String.valueOf(sum2));
firstNum=String.valueOf(sum2);
}
else if (operation.equals("*"))
{
sum2=f2*two2;
JTextField_user.setText(String.valueOf(sum2));
firstNum=String.valueOf(sum2);
}
else if (operation.equals("/"))
{
double f3=f2;
double two3=two2;
double sum3=f3/two3 ;
JTextField_user.setText(String.valueOf(sum3));
firstNum=String.valueOf(sum2);
}
else if(operation.equals("%"))
{
sum2=f2%two2;
JTextField_user.setText(String.valueOf(sum2));
firstNum=String.valueOf(sum2);
}
}
firstNum="0";
flag=true;
}
if("+-*/%".indexOf(target)>=0){
//第一:operation实现操作符的保存
//第二:保存第一个数
//第三:flag=true;
operation=target;
firstNum=JTextField_user.getText(); //第二:保存第一个数
flag=true;
}
//当得到数字和小数点后的工作
if("0123456789.".indexOf(target)>=0){
if(flag==true)
{
//JTextField_user.setText("0");
if (target.equals("."))
{
flag= false;
}
else if("0".equals(target))
{
JTextField_user.setText("0");
}
else
{
JTextField_user.setText("");
StringBuffer buffer = new StringBuffer (JTextField_user.getText());
//JTextField_user.setText(target);
JTextField_user.setText(buffer.toString());
flag= false;
}
}
if(flag==false){
StringBuffer buffer=new StringBuffer(JTextField_user.getText());
//当小数存在了,以及按了小数点就什么事都不干。
//target.equals(".")就是判断如果按的不是点就继续添加
if(buffer.toString().indexOf(".")>=0&&target.equals(".")){
}
else
{
buffer.append(target);
}
/*if(buffer.toString().substring(0, 1).equals("0")&&buffer.length()>1&&buffer.toString().substring(1,2)!=".")
{
String str="";
str=buffer.toString().substring(0, 1);
}*/
JTextField_user.setText(buffer.toString());
}
}
}
}
- JAVA计算器源码
- 简单计算器java源码
- Java计算器源码
- java计算器源码
- JAVA计算器【源码】
- Java计算器源码
- Java计算器源码
- 计算器(java源码)
- 子网掩码计算器java源码
- 一个简单的java计算器源码分析
- Java实现的计算器(完整源码)
- 计算器源码
- 计算器源码
- java计算器
- Java计算器
- 计算器java
- java计算器
- java计算器
- 一份完善的.Net的学习规划
- MFC多线程程序设计(源自深入浅出MFC)
- 很方面的串口类 CComAccess
- 笑翻了
- .net学习
- JAVA计算器源码
- IplImage::origin的认识
- 接口和类
- asp.net中关于<% %>、<%= %>的用法——个人总结
- 写什么
- 考研终于告一段落了,有很多话想说
- 自己写的利用hufman树压缩文件的程序
- 关于算法、code jam
- Ubuntu 学习笔记(不断更新)