读书人

高人们来帮帮小弟我啊小弟我都要被错误

发布时间: 2012-01-19 20:57:58 作者: rapoo

高人们来帮帮我啊,我都要被异常处理搞死了~~~~~~~~~~~~~~
编写一个简单的四则运算器,
public class inputException extends Exception
{
public inputException()
{
super();
}
public inputException(String s)
{
super(s);
}
}
存为文件inputException.java然后编译


public class works
{
public double work(double x,String a,double y) throws inputException
{
if(a== "+ ")
{
return x+y;
}
else
{
if(a== "- ")
{
return x-y;
}
else
{
if(a== "* ")
{
return x*y;
}
else
{
if(a== "/ ")
{
return x/y;
}
else
{
throw new inputException( "inputing error!!!!!!! ");
}
}
}
}
}
}
存为works.java然后编译
最后将
public class calculator
{
public static void main(String args[])
{
if(args.length==3)
{
works working=new works();


double a=0,b,c;
try
{
a=Double.parseDouble(args[0]);
b=Double.parseDouble(args[2]);
c=working.work(a,args[1],b);
System.out.println(a+args[1]+b+ "= "+c);
}
catch(NumberFormatException e)
{
System.out.println( "Inputing error!!! ");
}

}
else{throw new inputException(Inputing error!!!! ");}

}
}
存为calculator.java然后编译中出现

calculator.java:14: unreported exception inputException;must be caught or declared to be thrown
c=working.work(a. "+ ",b);
1 error
为什么呀!!!!!急死我了,谁能给我个满意的答案我分全给他啊,拜托了,拜托各位高人了!!!


我再补充下啊,这三个.java是存在一个文件夹里的,并且classpath也指向了这个文件夹,所以应该不会找不到inputException.class,而且我编译calculator.java前,前两个已经都编译好了,所以我就纳闷了,,,谁来帮帮我5555555

[解决办法]
把calculator类的代码改成

public class calculator
{
public static void main(String args[])
{
if(args.length==3)
{
works working=new works();
double a=0,b,c;
try
{
a=Double.parseDouble(args[0]);
b=Double.parseDouble(args[2]);
c=working.work(a,args[1],b);
System.out.println(a+args[1]+b+ "= "+c);
}
catch(NumberFormatException e)
{
System.out.println( "Inputing error!!! ");
}catch(inputException e)
{
System.out.println(e);
}

}else{throw new inputException(Inputing error!!!! ");}


}
}

[解决办法]
1 你中间那个文件能编译通过?有这么写if else的?还挂上N多个else?

2 还是中间的文件。针对你需要的功能,不能使用 == 来判断俩String类型的东西。因为你的目的是判断,是否输入的是+ - / *。然而,== 表示的是判断二者是否指向同一个对象。应该使用String类的static方法equals()。

3 "must be caught or declared to be thrown "就是说这句可能会出错,比如,所以要把对这个错误的处理给出来。可以在方法上throws出来,也可以用try{}catch(){}来捕获。你只是简单的抛出了异常,而没有对异常进行处理。throw出一个东西来,系统接收到,确认是个异常,但是并没有相应的try catch来处理。

4 我感觉,你的应该是JAVA中间异常这一部分的书后习题。是不是要求实现自定义异常?如果是,你应该在中间文件的类定义部分后面加上 "throws InputException "。然后在测试类里面,使用try catch来捕获所有可能触发的异常。最好在最后捕获一下Exception类。

5 说两句题外话。建议大家能不使用异常就不要使用异常,因为这东西是在JVM上运行的,系统开销非常的大。比如判断By Zero异常,也就是除0异常,可以简单的使用if来判断,同样实现了功能,但是系统开销很小。

读书人网 >J2SE开发

热点推荐