初学者,做了一个简单的java版计算器,遇到一个问题

baidu_37428939 2017-02-16 12:25:31
class SimpleCal{
private int num1,num2;//num1,num2用于存放运算数据
private char operator;//用于存放运算符

SimpleCal(){}//初始化运算式构造方法

SimpleCal(int num1,char operator,int num2){
this.num1=num1;
this.operator=operator;
this.num2=num2;

}

//求运算结果
private int cal(){
int result=0;
if(operator=='+')
result=num1+num2;
else if(operator=='-')
result=num1-num2;
else if(operator=='*')//就是这里,if验证总是不通,求解答
result=num1*num2;
else if(operator=='/'){
if(num2==0){//分母为0时报错
System.out.println("分母不能为0");
System.exit(-1);
}
result=num1/num2;
}
else{
System.out.println("输入的运算符错误");
System.exit(-1);
}
return result;
}

//输出运算式与运算结果
public void showResult(){
System.out.println("运算结果为:"+num1+operator+num2+"="+cal());//cal()为cal类返回值
}

public static void main(String[] args){
//验证格式是否正确,如不正确,提示正确格式,并结束程序
if(args.length !=3){
System.out.println("格式错误,请使用:java SimpleCal 操作数1 运算符 操作数2 的格式");
System.exit(-1);
}
//根据命令行参数,构造运算对象exp
SimpleCal exp=new SimpleCal(Integer.parseInt(args[0]),args[1].charAt(0),Integer.parseInt(args[2]));
//输出运算式和结果
exp.showResult();
}
}
...全文
253 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_37428939 2017-02-16
  • 打赏
  • 举报
回复
非常感谢大家,因为是初学者,所以还是bree06 的方法比较适合我,不过也很感 A骑士今洋和尼古拉斯-全蛋 前辈,让我提前学习了string,equal的知识,非常感谢。
A骑士今洋 2017-02-16
  • 打赏
  • 举报
回复
如果不是基本类型的判断(浮点型也一样),尽量不要用 == 来判断, 使用equal()方法
bree06 2017-02-16
  • 打赏
  • 举报
回复
你可以将*改为小写的x. 比较直观. java SimpleCal 1 x 2. 判断的时候则用if (operator=='x')
bree06 2017-02-16
  • 打赏
  • 举报
回复
因为中间的星号会转换成另外的意思, 传入参数的时候并不是你想要的. 比如java SimpleCal 1 * 2 此时main接收到的参数并不是1 * 2, 中间的星号(*)会被转成当前路径的所有文件. 比如当前目录下有[文档.txt], [xxx.mp3], 那么传入main的最终参数是1 文档.txt xxx.mp3 2这4个参数.
JackyRowe 2017-02-16
  • 打赏
  • 举报
回复
顶楼上! 必须要6个字...
  • 打赏
  • 举报
回复
用string,equal判等

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧