代码如下,请问运行结果,为什么?
class ex1_1{
public static void parse(String str){
try{
float f = Float.parseFloat(str);
}catch(NumberFormatException e){
f=0;
}finally{
System.out.println(f);
}
}
public static void main(String[] args){
parse("invalid");
}
}
class ex1_1{
public static void parse(String str){
try{
float f = Float.parseFloat(str);
}catch(NumberFormatException e){
f=0;
}finally{
System.out.println(f);
}
}
public static void main(String[] args){
parse("invalid");
}
}
class ex1_1 {
public static void parse(String str) {
float f = 0.0f;
try {
f = Float.parseFloat(str);
} catch (NumberFormatException e) {
f = 0;
} finally {
System.out.println(f);
}
} public static void main(String[] args) {
parse("invalid");
}
}
结果为0
try {
f = Float.parseFloat(str);
}catch(NumberFormatException e){
f=0;
}finally{
System.out.println(f);
}
public class ex1_1{
public static void parse(String str){
float f = 0;
try{
f = Float.parseFloat(str);
}catch(NumberFormatException e){
f=0;
}finally{
System.out.println(f);
}
}
public static void main(String[] args){
parse("invalid");
}
}应该是这一段吧,f如果在try块里面声明,catch后面的块儿是看不到的。
invalid因为不包含具有数字含义的字符串,所以转换成数字的时候会报NumberFormatException 异常。
这个异常被catch块儿接住后,f置为了零。由于finally是无论如何都会被执行到的代码,所以f被打印
了出来....
public static void parse(String str){
float f = 0;
try{
f = Float.parseFloat(str);
}catch(NumberFormatException e){
f=0;
}finally{
System.out.println(f);
}
}
public static void main(String[] args){
parse("invalid");
}
}输出0.0