/*
程序:netice
时间:2008-6-18
此计算器说明:
优点:
判断了输入的是否为数字,可以连续使用!
判断了写未知的输入错误
缺点:
只能在DOS下运行
只能2个数之间的简单的+-×/运算
仅仅是为了演示,所以精度为float型
扩展:
若想输入多个运算符也能实现,算法跟下边类似。
剩下的自己搞定吧,偶还有面试题要做。。。。
用了2小时,DOS下不怎么好调试。
*/
import java.io.*; //导入IO包
class Select
{ //输入数据流的类
String inputStr;
float fResult;
//提示部分
boolean tishi(String zi) throws IOException
{
String isGoonStr;
BufferedReader c=new BufferedReader(new InputStreamReader(System.in));
System.out.print(zi);
isGoonStr=c.readLine();
if(isGoonStr.equals("1"))
return true;
else
return false;
}
//计算机器主要算法
boolean select(String zi) throws IOException
{
BufferedReader c=new BufferedReader(new InputStreamReader(System.in));
System.out.print(zi);
inputStr=c.readLine();
//下面开始计算输入的计算式
String numberStr1="";
String numberStr2="";
String operatorStr=null;
float numberF1,numberF2;
boolean bNum1=true;//是否为第一个运算符
//判断是否为0.1类似数字,第一个数字为0则下个符号应该为“.”
if(inputStr.charAt(0)=='0')
{
if(inputStr.charAt(1)!='.')
return false;
}
//依次给数字1、数字2、运算符,进行赋值
for(int i=0;i<inputStr.length();i++)
{
switch(inputStr.charAt(i))
{
case '1':case '2':case '3':case '4':case '5':case '6':
case '7':case '8':case '9':case '0':case '.':
if(bNum1)
{
numberStr1+=inputStr.substring(i,i+1);
}
else
{
numberStr2+=inputStr.substring(i,i+1);
}
break;
case '+':case '-':case '*':case '/':
operatorStr=inputStr.substring(i,i+1);
bNum1=false;
break;
default:
return false;
}
}
//捕获未知的错误
try
{
//把字符串转换成数字
numberF1=Float.parseFloat(numberStr1);
numberF2=Float.parseFloat(numberStr2);
//计算出结果
switch(operatorStr.charAt(0))
{
case '+':
fResult=numberF1+numberF2;
break;
case '-':
fResult=numberF1-numberF2;
break;
case '*':
fResult=numberF1*numberF2;
break;
case '/':
//除数为0时候
if(numberF2==0)
{
System.out.print("除数不能为零!");
return false;
}
fResult=numberF1/numberF2;
break;
}
}
catch(Exception e)
{
return false;
}
//打印结果
System.out.print(" "+numberStr1+operatorStr+numberStr2+"="+fResult);
return true;
}
}
class calculator
{
//主函数
public static void main(String[]args) throws IOException
{
System.out.println("欢迎使用刘冰计算机器!");
System.out.println("请先阅读操作流程:");
System.out.println("提示输入运算式后:如下输入 数字1+数字2 回车 \n");
Select s=new Select();
int isGoon=1;
while(isGoon==1)
{
if(!s.select("请输入运算式:"))
{
System.out.println("输入非法!");
}
if(!s.tishi("\n是否继续使用计算器? 1:是 其他键:否\n"))
{
isGoon=2;
}
}
}
}
[ 本帖最后由 netice 于 2008-6-19 17:34 编辑 ]