首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

高人们来帮帮小弟我啊小弟我都要被错误处理搞死了~

2012-01-19 
高人们来帮帮我啊,我都要被异常处理搞死了~~~~~~~~~~~~~~编写一个简单的四则运算器,publicclassinputExcep

高人们来帮帮我啊,我都要被异常处理搞死了~~~~~~~~~~~~~~
编写一个简单的四则运算器,
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来判断,同样实现了功能,但是系统开销很小。

热点排行