计算器java源代码
2009-12-09 19:20
375 查看
自己用java写的一个计算器小程序可以进行加减乘除加括号的四则混合运算:
加减乘除可以直接实现,加上括号后需要右括号事件来触发
(这只是核心代码图形界面自己可以写!)
public class Ca3 {
//主计算方法参数为一个混合运算字符串
public static String cacluteMain(String str){
String []str1=str.split("[+-]"); //将字符串用“+-”拆分
for(int i=0;i<str1.length;i++){ //若拆分的子串包含“*/”高级运算,怎调用高级运算函数
if(str1[i].indexOf("/")>0||str1[i].indexOf("*")>0){
str1[i]=caculateUnder(str1[i]);
}
}
char stdfc[]=str.toCharArray(); //将次字符串转成字符数组
char stdf[]=new char[50]; //用于存放字符数组中符号
int j=0,count=1;
for(int i=0;i<stdfc.length;i++){ //记录字符数组中的运算符号及其次序
if(stdfc[i]=='+')
{stdf[j]='+';j++;count++;}
if(stdfc[i]=='-')
{stdf[j]='-';j++;count++;}
}
double stdd[]=new double[50];
for(int i=0;i<str1.length;i++) //将子串转换成实数
stdd[i]=Double.parseDouble(str1[i]);
for(int i=1;i<stdf.length;i++){ //将转换成的实数数组结合记录的符号数组计算结果
if(stdf[i-1]=='+')
stdd[0] += stdd[i];
if(stdf[i-1]=='-')
stdd[0] -=stdd[i];
}
Double d=new Double(stdd[0]);
String result=d.toString();
return result; //返回值为计算结果的字符串对象
}
//此方法为私有方法只有主方法caculateMain()能调用;此方法用于计算含有“*/”高级字符串
private static String caculateUnder(String str){//此函数用于计算包含“/*”高级运算
//String stds[];
char stdf[]=new char[50]; //用于记录所传字符串中的运算符号
double stdd[]=new double[50]; //用于存放所拆分成的字符串的实数转换
String stds[]=str.split("[/*]"); //拆分所传的字符串参数
for(int i=0;i<stds.length;i++) //将分开的子串转换成实数
stdd[i]=Double.parseDouble(stds[i]);
char stdfc[]=str.toCharArray(); //将所传字符串转成字符数组
int j=0,count=1;
for(int i=0;i<stdfc.length;i++){ //用数组stdf[]记录字符数组中运算符号的位置
if(stdfc[i]=='/')
{stdf[j]='/';j++;count++;}
if(stdfc[i]=='*')
{stdf[j]='*';j++;count++;}
}
for(int i=1;i<count;i++){ //根据转换成的实数数组和记录符号的数组来计算
if(stdf[i-1]=='/')
stdd[0] /= stdd[i];
if(stdf[i-1]=='*')
stdd[0] *=stdd[i];
}
Double d =new Double(stdd[0]);
String result=d.toString();
return result; //返回值为结果的字符串对象
}
//此函数用于计算包含括号的字符串
public static String caculateHigh(String str){
String []str1;
str1=str.split("[(]"); //用左括号将所传参数分隔
String str2;
str2=cacluteMain(str1[str1.length-1]); //调用住计算方法
String str3;
str3="("+str1[str1.length-1];
str=str.replace(str3, str2); //将括号中的结果替换掉原来括号的位置
return str;
}
public static void main(String[] args) {
System.out.println(cacluteMain("3*4/2+5*4/2+3-4+9*2/4*2"));
}
}
加减乘除可以直接实现,加上括号后需要右括号事件来触发
(这只是核心代码图形界面自己可以写!)
public class Ca3 {
//主计算方法参数为一个混合运算字符串
public static String cacluteMain(String str){
String []str1=str.split("[+-]"); //将字符串用“+-”拆分
for(int i=0;i<str1.length;i++){ //若拆分的子串包含“*/”高级运算,怎调用高级运算函数
if(str1[i].indexOf("/")>0||str1[i].indexOf("*")>0){
str1[i]=caculateUnder(str1[i]);
}
}
char stdfc[]=str.toCharArray(); //将次字符串转成字符数组
char stdf[]=new char[50]; //用于存放字符数组中符号
int j=0,count=1;
for(int i=0;i<stdfc.length;i++){ //记录字符数组中的运算符号及其次序
if(stdfc[i]=='+')
{stdf[j]='+';j++;count++;}
if(stdfc[i]=='-')
{stdf[j]='-';j++;count++;}
}
double stdd[]=new double[50];
for(int i=0;i<str1.length;i++) //将子串转换成实数
stdd[i]=Double.parseDouble(str1[i]);
for(int i=1;i<stdf.length;i++){ //将转换成的实数数组结合记录的符号数组计算结果
if(stdf[i-1]=='+')
stdd[0] += stdd[i];
if(stdf[i-1]=='-')
stdd[0] -=stdd[i];
}
Double d=new Double(stdd[0]);
String result=d.toString();
return result; //返回值为计算结果的字符串对象
}
//此方法为私有方法只有主方法caculateMain()能调用;此方法用于计算含有“*/”高级字符串
private static String caculateUnder(String str){//此函数用于计算包含“/*”高级运算
//String stds[];
char stdf[]=new char[50]; //用于记录所传字符串中的运算符号
double stdd[]=new double[50]; //用于存放所拆分成的字符串的实数转换
String stds[]=str.split("[/*]"); //拆分所传的字符串参数
for(int i=0;i<stds.length;i++) //将分开的子串转换成实数
stdd[i]=Double.parseDouble(stds[i]);
char stdfc[]=str.toCharArray(); //将所传字符串转成字符数组
int j=0,count=1;
for(int i=0;i<stdfc.length;i++){ //用数组stdf[]记录字符数组中运算符号的位置
if(stdfc[i]=='/')
{stdf[j]='/';j++;count++;}
if(stdfc[i]=='*')
{stdf[j]='*';j++;count++;}
}
for(int i=1;i<count;i++){ //根据转换成的实数数组和记录符号的数组来计算
if(stdf[i-1]=='/')
stdd[0] /= stdd[i];
if(stdf[i-1]=='*')
stdd[0] *=stdd[i];
}
Double d =new Double(stdd[0]);
String result=d.toString();
return result; //返回值为结果的字符串对象
}
//此函数用于计算包含括号的字符串
public static String caculateHigh(String str){
String []str1;
str1=str.split("[(]"); //用左括号将所传参数分隔
String str2;
str2=cacluteMain(str1[str1.length-1]); //调用住计算方法
String str3;
str3="("+str1[str1.length-1];
str=str.replace(str3, str2); //将括号中的结果替换掉原来括号的位置
return str;
}
public static void main(String[] args) {
System.out.println(cacluteMain("3*4/2+5*4/2+3-4+9*2/4*2"));
}
}
相关文章推荐
- Java源代码计算器
- java编写的计算器源代码
- JAVA编写的计算器源代码
- JAVA编写的计算器源代码
- 第二十三篇 Java如何编译 计算器 的源代码共享
- 计算器制作JAVA版 (源代码)
- Java编写的计算器程序及源代码
- 计算器 java源代码
- java swing开发最简易计算器源代码
- 用java编写计算器的源代码,,,
- java 源代码计算器。面向对象教程第一次作业
- 我的第一个安卓小工具-计算器 希望各路大神指点!!正文是java源代码
- 计算器JAVA源代码
- 计算器 java源代码
- Java编写的计算器程序及源代码
- 《Java程序设计》第一次作业:简单的JAVA源代码之计算器
- 计算器JAVA源代码
- Java计算器的源代码
- java编写计算器小应用源代码
- 简易 计算器 源代码(JAVA)