自己抄写的课本上的代码,暂时还是搞不懂什么意思,先留着,以后再好好看看

package __throw;

public class throw_suanshuyunsuan
{
static private float result;//保存计算结果
// calculate 方法计算结果,并判断输入的运算符的合法性:
static void calculate (float op1,char sign,float op2) throws ArithmeticException,IllegalSignException
{
switch(sign)
{
case'+':result = op1 + op2;break;
case'-':result = op1 - op2;break;
case'x':result = op1 * op2;break;
case'/': //做除法时,如果除数为0,抛出异常
if(op2==0) throw new ArithmeticException();
result = op1/op2;break;
//如果是不合法的运算符,抛出异常。
default: throw new IllegalSignException("你输入的运算符不对");
}
}
public static void main(String args[])
{
float in0,in2;//保存输入的两个数
char in1;//保存输入的运算符
try{
in0 = Float.parseFloat(args[0]);//接受第一个数字
in1 = args[1].charAt(0);//接收运算符
in2 = Float.parseFloat(args[2]);//接收第二个数字
calculate(in0,in1,in2);
System.out.println(in0+" " + in1+ " "+ in2+" = " +result);
}
catch(NumberFormatException nfe)
{
System.out.println("你输入的数有的可能不是合法数字,请注意:乘号用字母x代替。");
}
catch(ArrayIndexOutOfBoundsException aibe)
{
System.out.println("你没有输入(或全部输入)所需的数据,程序需要两个数字和一个运算符。");
}
catch(ArithmeticException ae)
{ System.out.println("进行除的运算时,第二个数字不嗯给你驶入0!"); }
catch(IllegalSignException ise)
{ System.out.println(ise.getMessage());
System.out.println("每次之恩给你输入(+-x/)其中的一个,请注意:乘号用字母x代替。");
}
finally
{
System.out.println("");
System.out.println("谢谢使用,祝你成功");
}
}
//自定义异常类,当输入的算术运算符不是合法运算符时抛出此异常
class IllegalSignException extends Exception
{
private String message;
IllegalSignException(String s){ message = s;}
public String getMessage(){return message;}
}
}
/*
黄书p167 p168
程序运行的可能结果如下
1
》java Calculator 3x9
3.0x9.0=27.0
谢谢使用,祝你成功!
2
》java Calculator 3x9
你输入的数有的可能不是合法数字,请注意,乘号用字母x代替;
谢谢使用,祝你成功
3
》java Calculator 3x
你没有的输入(或全部输入)所需的数据,程序需要两个数字和一个运算符;
谢谢使用,祝你成功
4
》java Calculator 3/0
进行除的运算时,第二个数字不能输入0!
谢谢使用,祝你成功!
5
》java Calculator 3*0
你输入的运算符不对!
每次只能输入(+-x/)其中的一个,请注意,乘号用字母x代替
谢谢使用,祝你成功!



两个程序都是照着书写的,
都是不同程度的出了错误,
感觉应该是数组方面的问题,
暂时先把问题留在这里,
等以后再回首来解决这个问题,

















*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值