「java计算器下载」JAVA计算器
本篇文章给大家谈谈java计算器下载,以及JAVA计算器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java 计算器
- 2、求一个java 计算器,支持键盘输入的代码,最好有注释
- 3、用java编得计算器程序软件和源代码
- 4、求JAVA编写的 简易计算器程序,附上注释
- 5、java计算器程序 附带说明书
Java 计算器
在一个文本框里输入算式,点击按钮(计算按钮)
用文本框的getText();方法获取输入的算式字符串赋值到一个变量里(假设为text)
然后 用if判断
// 储存结果
int result;
// 运算符所在位置
int index;
/*
读取+号在这个字符串中所在的位置赋值给变量index,同时判断index是不是大于0(意思是这个字符串中有没有+号)
*/
if((index=text.indexOf("+"))0){
String a=text.substring(0, index-1);
String b=text.substring(index+1, text.length()-1);
result=Integer.pareInt(a) + Integer.pareInt(b);
}else if((index=text.indexOf("-"))0){
String a=text.substring(0, index-1);
String b=text.substring(index+1, text.length()-1);
result=Integer.pareInt(a) - Integer.pareInt(b);
}else if ...
依次 +,-,*,/
这种的只能做简单运算 要做复杂运算很麻烦
要用到堆栈,不要用堆栈也行 用迭代方法 加上很复杂的算法也能实现
// 按优先级最高的依次往下找
int index;
// 用于储存更变后的算式
ListString list=new ArratListString();
// 判断是否存在括号
if((index=text.indexOf("("))0){
int index2;
// 循环查找结尾括号
for(int i=index; itext.length();i++){
if((index2=text.indexOf(")"))0){
break;
}
}
// 按运算优先级 拆分原有复杂算式为多个简单算式
list.add(text.substring(index+1, index2-1));
// 更新原有的算式,提取出来的部分则由字符x代替
text=text.substring(0, index-1) + "x" + text.subString(index2+1, text.length()-1);
}
// 查找*号
if((index=text.indexOf("*"))0){
String text2=text.substring(0, index-1);
int index1,index2;
// 循环查找要相乘的2个数的第一个起始
for(int i=index-1; i=0;i--){
if(text.charAt(i) == '+' || text.charAt(i) == '-' || text.charAt(i) == '*' || text.charAt(i) == '/'){
// 去掉开头运算符
index1=i+1;
break;
}else{
index1=0;
break;
}
}
// 循环查找要相乘的2个书的第二个结尾
for(int i=index+1; i=text.length(); i++){
if(text.charAt(i) == '+' || text.charAt(i) == '-' || text.charAt(i) == '*' || text.charAt(i) == '/'){
// 去掉结尾运算符
index2=i-1;
break;
}else{
index2=text.length();
break;
}
}
list.add(text.substring(index1, index2));
text.substring(0, index1-1) + text.substring(index2+1, text.length-1);
}
......
+,-,*,/ 都要写一个判断,并且最重要的是每一个判断都要迭代, 比如取括号的 要把带括号的算式取干净了 才能进行下一步 取*号
最后复杂算式都转换为按优先级排列的简单算式了 下面我想不用我再说了吧 你应该知道怎么做了。
求一个java 计算器,支持键盘输入的代码,最好有注释
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//while(true){
Scanner sc = new Scanner(System.in);
System.out.println(jisuan(sc.next()));
}
private static float jisuan(String cont){
List arryList = new ArrayList();
char[] str = cont.toCharArray();
Character astr;
String s = "";
for(int i=0;istr.length;i++){
astr = str[i];
if(astr=='+'||astr=='-'||astr=='*'||astr=='/'||astr=='=')
{
arryList.add(s);
s="";
if(astr!='='){
arryList.add(astr.toString());
}
}else{
s += astr;
}
}
float count = 0;
List jjlist = chengchuModel(arryList);
String ssf = "";
String var1 = "";
String var2 = "";
if(jjlist.size()=3){
for(int i=1;ijjlist.size();i=i+2){ //jjlist中就只有加减法了
ssf = (String)jjlist.get(i); // 获得jjlist中的加法或减法字符进行判断
var2 = (String)jjlist.get(i+1);
if(i==1){ //判断第一个运算符是加号还是减号,两个情况下的运行也是不同的
var1 = (String)jjlist.get(i-1); //只有第一次加减的时候才会去取前一个数字进行运算
if(ssf.trim().equals("-")){
count = Float.parseFloat(var1) - Float.parseFloat(var2);
}else{
count = Float.parseFloat(var1) + Float.parseFloat(var2);
}
}else{
if(ssf.trim().equals("-")){
count = count - Float.parseFloat(var2);
}else{
count = count + Float.parseFloat(var2);
}
}
}
}else{
count = Float.parseFloat(jjlist.get(0).toString());
}
return count;
}
private static boolean checkstr(String str){
if(!str.trim().equals("*")!str.trim().equals("/"))
return true;
return false;
}
private static boolean cheng(String str){
if(str.trim().equals("*"))
return true;
return false;
}
private static boolean chu(String str){
if(str.trim().equals("/"))
return true;
return false;
}
private static List chengchuModel(List list){ //将输入的算术的所有乘除法算出来只剩下加减法
String var1 ="";
String var2 ="";
String var3 ="";
for(int i=1;ilist.size();i=i+2){
var1 = (String)list.get(i-1);
var2 = (String)list.get(i);
var3 = (String)list.get(i+1);
if(!checkstr(var2)){
if(cheng(var2)){
list.set(i-1, String.valueOf((Float.parseFloat(var1)*Float.parseFloat(var3))));
list.remove(i);
list.remove(i);
i = i-2;
//
}else if(chu(var2)){
list.set(i-1, String.valueOf((Float.parseFloat(var1)/Float.parseFloat(var3))));
list.remove(i);
list.remove(i);
i = i-2;
}
}
}
return list;
}
}
测试:
输入:33-6*5+7/4=
结果:4.75
用java编得计算器程序软件和源代码
java计算器源程序
java计算器
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class calculation extends JFrame
{public calculation() /*构造方法*/
{super("计数器");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initTextPanel(); /*文本框*/
initControlPanel(); /*控制键*/
initKeyPanel(); /*数字和运算符*/
Container pane = getContentPane();
pane.setLayout(new BorderLayout());
pane.add(TextPanel,BorderLayout.NORTH);
pane.add(ControlPanel,BorderLayout.CENTER);
pane.add(KeyPanel,BorderLayout.SOUTH);
pack();
try
{UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}
catch(Exception ex)
{;} /*设置Windons观感*/
SwingUtilities.updateComponentTreeUI(this);
setResizable(false);
setVisible(true);
}
private void initTextPanel() /*设置文本框*/
{ TextPanel=new JPanel();
TextPanel.setLayout(new FlowLayout());
Resultarea =new JTextField("0",25);
Resultarea.setEditable(false); /*设置不可编辑*/
Color color=Color.white;
Resultarea.setBackground(color); /*颜色*/
Resultarea.setHorizontalAlignment(JTextField.RIGHT); /*设置显示位置*/
TextPanel.add(Resultarea);
}
private void initControlPanel() /*设置控制键*/
{ControlPanel=new JPanel();
ControlPanel.setLayout(new GridLayout(1,3,4,4));
JButton b1=new JButton("Backspace"); /*Backspace键*/
b1.setFont(font1);
b1.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{String s1=Resultarea.getText();
int l=s1.length();
Resultarea.setText(s1.substring(0 ,l-1));
}
});
ControlPanel.add(b1);
JButton b2=new JButton("CE"); /*CE键*/
b2.setFont(font1);
b2.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{Resultarea.setText("0");
isNew=true;
}
});
ControlPanel.add(b2);
JButton b3=new JButton("C"); /*C键*/
b3.setFont(font1);
b3.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{Resultarea.setText("0");
pnum="";
operation="";
isNew=true;
}
});
ControlPanel.add(b3);
}
private void initKeyPanel() /*设置数字键和运算符键*/
{String key[] = {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};
KeyPanel = new JPanel();
KeyPanel.setLayout(new GridLayout(4,5,4,4));
for(int i=0;i20;i++)
{String label = key[i];
JButton b = new JButton(label);
b.setActionCommand(key[i]);
b.setFont(font2);
KeyPanel.add(b);
b.addActionListener(new ActionListener() /*无名监听器*/
{public void actionPerformed(ActionEvent e)
{Key_actionPerformed(e);
}
});
}
}
public void Key_actionPerformed(ActionEvent e) /*数字键和运算符键无名监听器*/
{String s=(e.getActionCommand());
String st=Resultarea.getText();
if(s.equals("0")) /*输入数为0*/
{if(st.equals("0"))
return;
else
{if(!isNew)
Resultarea.setText(st+"0");
else
Resultarea.setText("0");
}
isNew=false;
return;
}
if(s.equals("+/-")) /*输入数为+/-*/
{double k=Double.parseDouble(st);
{if(k!=0)
display(-k);
}
return;
}
if(s.equals("1")||s.equals("2")||s.equals("3")||s.equals("4")||s.equals("5")||s.equals("6")||s.equals("7")||s.equals("8")||s.equals("9")) /*输入1-9*/
{if(!isNew)
Resultarea.setText(st+s);
else
{ Resultarea.setText(s);
isNew=false;
}
return;
}
if(s.equals(".")) /*输入小数点*/
{if(Resultarea.getText().indexOf(".")==-1) /*不存在小数点*/
{if(isNew)
{Resultarea.setText("0.");
isNew=false;
}
else
Resultarea.setText(st+".");
}
return;
}
isNew=true; /*按下运算符,输入新的数*/
if(s.equals("="))
{compute(s);
operation="";
}
else
{if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/")) /*二目运算符号*/
{if(operation.equals(""))
{pnum=Resultarea.getText();
operation=s;
}
else
compute(s);
}
else /*一目运算*/
{Count count1=new Count(Double.parseDouble(st));
if(s.equals("sqrt"))
{
display(count1.sqrt());
}
else
{if(s.equals("1/x"))
{if(st.equals("0"))
{Resultarea.setText("除数不能为0.");
operation="";
pnum="";
}
else
display(count1.reciprocal()); /*求倒数*/
}
else
display(Double.parseDouble(st)/100); /*输入%,使当前显示的值除于100*/
}
}
}
}
private void compute(String s)
{if(s.equals("="))
{if(operation.equals(""))
return;
}
double data1=Double.parseDouble(pnum);
double data2=Double.parseDouble(Resultarea.getText());
Count count2=new Count(data1,data2); /*加减乘除计算*/
if(operation.equals("+"))
display((count2.plus()));
else
{if(operation.equals("-"))
display((count2.minus()));
else
{if(operation.equals("*"))
display((count2.multiply()));
else
if(operation.equals("/"))
{if(data2==0)
{Resultarea.setText("除数不能为0");
operation="";
pnum="";
return;
}
else
display((count2.divide()));
}
}
}
operation=""; /*符号为当前符*/
pnum=Resultarea.getText();/*运算数为当前文本数*/
}
public void display(double result) /*显示输出方法*/
{int a=(int)result;
if(a==result)
Resultarea.setText(String.valueOf(a));
else
Resultarea.setText(String.valueOf(result));
if(Resultarea.getText().equals("NaN"))
Resultarea.setText("输入函数无效");
}
private JPanel TextPanel; /*文本框棉板*/
private JTextField Resultarea; /*文本框*/
private JPanel ControlPanel; /*控制键键面板*/
private JPanel KeyPanel; /*数字键和运算符键面板*/
private Font font1=new Font("Dialog",0, 10); /*控制键字体*/
private Font font2 = new Font("Dialog",0,10); /*数字键和符号键字体*/
private String pnum=""; /*前操作数*/
private boolean isNew=true; /*控制是否是新数*/
private String operation=""; /*运算符*/
}
class tester /*测试类*/
{
public static void main(String[] args)
{
new calculation();
}
}
求JAVA编写的 简易计算器程序,附上注释
1、首先准备好软件即eclipse和java,下载安装完成后打开eclipse。
2、点击左上角的file 新建一个project。
3、给project取一个名字,其他的选项都是默认然后点击finish。
4、接下来是新建一个class。
5、在给class取名字的时候注意用英文名的首字母要大写。完成后点击finish。
6、这就是开始写代码的工作台,将代码写在绿字下。
7、这就是第一个hello world程序。
java计算器程序 附带说明书
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Math;
public class Calculator implements ActionListener{
JFrame f;
JPanel pa[]=new JPanel[6];
JLabel lb;
JTextField ta;
JButton bt[]=new JButton[22];
public Calculator(){
f=new JFrame("计算器小程序");
Container cp=f.getContentPane();
f.setVisible(true);
f.setSize(400,400);
cp.setLayout(new GridLayout(2,1));
pa[0]=new JPanel(new GridLayout(3,1));
cp.add(pa[0]);
pa[1]=new JPanel(new GridLayout(1,2));
pa[2]=new JPanel(new GridLayout(1,2));
cp.add(pa[2]);
pa[3]=new JPanel(new GridLayout(4,3));
pa[2].add(pa[3]);
pa[4]=new JPanel(new GridLayout(4,2));
pa[2].add(pa[4]);
lb=new JLabel("计算器");
pa[0].add(lb);
ta=new JTextField();
pa[0].add(ta);
pa[0].add(pa[1]);
for(int j=0;j=9;j++){
String m=""+j;
bt[j]=new JButton(m);
bt[j].addActionListener(this);
pa[3].add(bt[j]);
}
bt[10]=new JButton("+");
bt[10].addActionListener(this);
pa[3].add(bt[10]);
bt[11]=new JButton("-");
bt[11].addActionListener(this);
pa[3].add(bt[11]);
bt[12]=new JButton("Backspace");
bt[12].addActionListener(this);
pa[1].add(bt[12]);
bt[13]=new JButton("清空");
bt[13].addActionListener(this);
pa[1].add(bt[13]);
bt[14]=new JButton("/");
bt[15]=new JButton("sqrt");
bt[16]=new JButton("*");
bt[17]=new JButton("+/-");
bt[18]=new JButton("pow");
bt[19]=new JButton("1/x");
bt[20]=new JButton(".");
bt[21]=new JButton("=");
for(int j=14;j=21;j++) {
bt[j].addActionListener(this);
pa[4].add(bt[j]);
}
f.addWindowListener(new WinLis());
}
public void actionPerformed(ActionEvent e){
for(int i=0;i=9;i++){
if(e.getSource()==bt[i]){
String n=ta.getText();
String m=n+i;
ta.setText(m);
}
}
if(e.getSource()==bt[10]){
String m=ta.getText();
ta.setText(m+"+");
}
if(e.getSource()==bt[11]){
String m=ta.getText();
ta.setText(m+"-");
}
if(e.getSource()==bt[12]){
String m=ta.getText();
int n=m.length();
if(n=2){
String c=m.substring(0,n-1);
ta.setText(c);
}
else
ta.setText("");
}
if(e.getSource()==bt[13]){
ta.setText("0");
}
if(e.getSource()==bt[14]){
String m,c;
m=ta.getText();
c=m+"/";
ta.setText(c);
}
if(e.getSource()==bt[15]){
String m=ta.getText();
double n=Double.parseDouble(m);
double s=Math.sqrt(n);
String ss=""+s;
int sn=ss.indexOf('.');
String cs=ss.substring(sn+1);
int len=cs.length();
if(len1){
ta.setText(ss);
}
else{
String st=""+cs.charAt(0);
int it=Integer.parseInt(st);
if(it0)
ta.setText(ss);
else
ta.setText(ss.substring(0,sn));
}
}
if(e.getSource()==bt[16]){
String m=ta.getText();
ta.setText(m+"*");
}
if(e.getSource()==bt[17]){
String m=ta.getText();
String mm;
int b=m.indexOf('-');
if(b!=-1){
mm=m.substring(1);
ta.setText(mm);
}
else{
mm=m;
ta.setText("-"+mm);
}
}
if(e.getSource()==bt[18]){
String m=ta.getText();
double n=Double.parseDouble(m);
double s=Math.pow(n,2);
String ss=""+s;
int sn=ss.indexOf('.');
String cs=ss.substring(sn+1);
int len=cs.length();
if(len1){
ta.setText(ss);
}
else{
String st=""+cs.charAt(0);
int it=Integer.parseInt(st);
if(it0)
ta.setText(ss);
else
ta.setText(ss.substring(0,sn));
}
}
if(e.getSource()==bt[19]){
}
if(e.getSource()==bt[20]){
String m=ta.getText();
int nm=m.indexOf(".");
/*if(nm==-1){
ta.setText(m+".");
}*/
ta.setText(m+".");
}
if(e.getSource()==bt[21]){
String m=ta.getText();
int a=m.indexOf('+');
int p=m.indexOf('.');
if(a!=-1){
if(p==-1){
int s=Integer.parseInt(m.substring(0,a))+Integer.parseInt(m.substring(a+1));
ta.setText(""+s);
}
else{
double ds=Double.parseDouble(m.substring(0,a))+Double.parseDouble(m.substring(a+1));
ta.setText(""+ds);
}
}
int b=m.indexOf('-');
String bb=""+m.charAt(0);
String bm=m.substring(b+1);
int bn=bm.indexOf('-');
if(b!=-1){
if(bb=="-"bn!=-1){
if(p==-1){
int s=Integer.parseInt(m.substring(1,bn))+Integer.parseInt(m.substring(bn+1));
ta.setText("-"+s);
}
else{
double ds=Double.parseDouble(m.substring(1,bn))+Double.parseDouble(m.substring(bn+1));
ta.setText("-"+ds);
}
}
if(b=1bn==-1){
if(p==-1){
int s=Integer.parseInt(m.substring(0,b))-Integer.parseInt(m.substring(b+1));
ta.setText(""+s);
}
else{
double ds=Double.parseDouble(m.substring(0,b))-Double.parseDouble(m.substring(b+1));
ta.setText(""+ds);
}
}
}
int c=m.indexOf('*');
if(c!=-1){
int s1=Integer.parseInt(m.substring(0,c));
int s2=Integer.parseInt(m.substring(c+1));
int s=s1*s2;
ta.setText(""+s);
}
int d=m.indexOf('/');
if(d!=-1){
int s1=Integer.parseInt(m.substring(0,d));
int s2=Integer.parseInt(m.substring(d+1));
if(s2==0){
ta.setText("除以零公式无效");
}
else{
double s=s1/s2;
ta.setText(""+s);
}
}
}
}
class WinLis extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
public static void main(String[] args){
new Calculator();
}
}
我也学java没多长时间,写了一个这样的程序,有许多地方还需要完善,希望可以帮助你一下,没写注释,我觉得你查一书就能看明白的
关于java计算器下载和JAVA计算器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-14,除非注明,否则均为
原创文章,转载请注明出处。