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
楼主【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 %
敬礼!
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
}
}
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
语句2 因为计算结果是浮点数,赋值给int会有精度丢失,提示你。所以有感叹号。如果用强制转换类型就没有感叹号了。
{
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类的对象吗? 怎么和你改的结果输出的不一样?
你那样写的话你的devide方法在哪里执行的,没有执行devide方法返回的就是a的初值0