class Test
{
public void devide(int x,int y) throws Exception
{
if (y<0)
throw new WrongDevide("devisor is"+y);
    int a =x/y;//语句2
   
}
}
class WrongDevide extends Exception//语句3
{
public WrongDevide(String msg)
{
super(msg);
}
}
class TestException
{
public static void main(String [] args)
{   

try
{
new Test().devide(4,1);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
System.out.println("x/y="+a);//语句1
 }
}
语句1报错了 什么原因?怎么改?
语句2 也说有问题 有叹号。
语句3中的 WrongDevide 也有叹号,好像是有错误。
我用 eclipse

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【kinghukyoun】截止到2008-07-17 10:11:22的历史汇总数据(不包括此帖):
    发帖的总数量:4                        发帖的总分数:110                      每贴平均分数:27                       
    回帖的总数量:8                        得分贴总数量:1                        回帖的得分率:12%                      
    结贴的总数量:4                        结贴的总分数:110                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    看注释
    class Test
    {
        public void devide(int x, int y) throws Exception
        {
            if(y < 0)
                throw new WrongDevide("devisor is" + y);
            // int a = x / y;// 语句2
            // 字段a从未使用过,所以有叹号,所以上面一行应该注释掉
        }
    }class WrongDevide extends Exception// 语句3  //缺少序列化字段serialVersionUID,点那个吧号,eclipse会自动生成
    {
        private static final long serialVersionUID = 6783896335519312258L;    public WrongDevide(String msg)
        {
            super(msg);
        }
    }class TestException
    {
        public static void main(String[] args)
        {        try
            {
                new Test().devide(4, 1);
            }
            catch(Exception e)
            {
                System.out.println(e.getMessage());
            }
            
            //你这里的这个a是哪儿来的,没声明当然找不到了,所以报错
            System.out.println("x/y=" + a);//语句1
        }
    }
      

  3.   

    正确的是
    class Test
    {
        int a;    public void devide(int x, int y) throws Exception
        {
            if(y < 0)
            {
                throw new WrongDevide("devisor is" + y);
            }        a = x / y;
        }
    }class WrongDevide extends Exception
    {
        private static final long serialVersionUID = 6783896335519312258L;    public WrongDevide(String msg)
        {
            super(msg);
        }
    }public class TestException
    {
        public static void main(String[] args)
        {
            Test test = new Test();        try
            {
                test.devide(4, 1);
            }
            catch(Exception e)
            {
                System.out.println(e.getMessage());
            }        System.out.println("x/y=" + test.a);
        }
    }
    文件名TestException.java
      

  4.   

    语句1的 a 没有定义
    语句2 因为计算结果是浮点数,赋值给int会有精度丢失,提示你。所以有感叹号。如果用强制转换类型就没有感叹号了。
      

  5.   

    谢谢 craky class TestException
    {
        public static void main(String[] args)
        {        try
            {
                new Test().devide(4, 1);
            }
            catch(Exception e)
            {
                System.out.println(e.getMessage());
            }
             System.out.println("x/y=" + new Test().a);//语句1
        }
    }
    红色字体部分我要是这样改写,会输出x/y=0。 不是同样生成了一个Test类的对象吗? 怎么和你改的结果输出的不一样?
      

  6.   

    还有为什么我把eclipse里面的代码直接复制粘贴到论坛 , 原有的排版全被打乱了?
      

  7.   


    你那样写的话你的devide方法在哪里执行的,没有执行devide方法返回的就是a的初值0