
java高手 请帮帮忙~~帮我看一下~~~谢谢~~
publicclassExample4_33{publicstaticvoidmain(Stringargs[]){intn=0,m=0,t=555;try{m=Inte...
public class Example4_33
{ public static void main(String args[ ])
{ int n=0,m=0,t=555;
try{ m=Integer.parseInt("8888");
n=Integer.parseInt("abc789");
t=9999; //这里为什么t没有付赋值机会呢??
}
catch(NumberFormatException e)
{ System.out.println("发生异常:"+e.getMessage());
e.printStackTrace();
n=123;
}
System.out.println("n="+n+",m="+m+",t="+t);
}
}
为什么t在最后的结果是555而不是9999呢?? 展开
{ public static void main(String args[ ])
{ int n=0,m=0,t=555;
try{ m=Integer.parseInt("8888");
n=Integer.parseInt("abc789");
t=9999; //这里为什么t没有付赋值机会呢??
}
catch(NumberFormatException e)
{ System.out.println("发生异常:"+e.getMessage());
e.printStackTrace();
n=123;
}
System.out.println("n="+n+",m="+m+",t="+t);
}
}
为什么t在最后的结果是555而不是9999呢?? 展开
展开全部
修改后的程序如下:
public class Example4_33 {
public static void main(String args[]) {
int n = 0, m = 0, t = 555;
try {
//t = 9999; 把这句代码调到最前面,也同样可以
m = Integer.parseInt("8888");
n = Integer.parseInt("abc789");
} catch (NumberFormatException e) {
System.out.println("发生异常:" + e.getMessage());
e.printStackTrace();
n = 123;
}finally{
t=9999;
}
System.out.println("n=" + n + ",m=" + m + ",t=" + t);
}
}
原因解释:因为函数在运行到n=Integer.parseInt("abc789"); 这句时会抛出异常,那么这句代码后面的语句自然就不会执行到了,所以,你的问题就在这儿。
解决:
1、可以将t = 9999; 把这句代码调到try{}内的最前面,如上面所示
2、或者再加上一个fianlly语句,不管try部分会不会抛出异常,finally部分都会执行的,除非遇到特出情况,如系统退出。
public class Example4_33 {
public static void main(String args[]) {
int n = 0, m = 0, t = 555;
try {
//t = 9999; 把这句代码调到最前面,也同样可以
m = Integer.parseInt("8888");
n = Integer.parseInt("abc789");
} catch (NumberFormatException e) {
System.out.println("发生异常:" + e.getMessage());
e.printStackTrace();
n = 123;
}finally{
t=9999;
}
System.out.println("n=" + n + ",m=" + m + ",t=" + t);
}
}
原因解释:因为函数在运行到n=Integer.parseInt("abc789"); 这句时会抛出异常,那么这句代码后面的语句自然就不会执行到了,所以,你的问题就在这儿。
解决:
1、可以将t = 9999; 把这句代码调到try{}内的最前面,如上面所示
2、或者再加上一个fianlly语句,不管try部分会不会抛出异常,finally部分都会执行的,除非遇到特出情况,如系统退出。
展开全部
n=Integer.parseInt("abc789"); 这里抛出异常,直接跳到catch语句.
t=9999;没机会执行
t=9999;没机会执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为:n=Integer.parseInt("abc789"); 发生了异常,程序会直接跳转到catch语句来处理异常现象,随后顺序执行直至最后,而不执行t=9999;
所以t还是555.
所以t还是555.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
异常啊,,,,
你可以用输出语句测试下,,,
你可以用输出语句测试下,,,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为try...catch就是捕捉异常的语句.所以发生异常后会自动跳转到catch部分.如果没有try..catch则程序就会中断或崩溃!
如果你想让t输出9999
那就加上个finally语句,finally语句是肯定要执行的,所以你把t=9999放到finally语句块里就可以
有什么问题可以通过百度hi找我,我每天都挂着
如果你想让t输出9999
那就加上个finally语句,finally语句是肯定要执行的,所以你把t=9999放到finally语句块里就可以
有什么问题可以通过百度hi找我,我每天都挂着
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询