【发布时间】:2014-10-05 15:11:10
【问题描述】:
好吧,我是编程课的入门学生,我正在尝试测试 NFE 的 catch 语句。我不知道如何正确格式化代码,但就是这样。
import java.util.Scanner;
public class Geo {
public static void main(String[] args) {
try {
Scanner inp = new Scanner(System.in);
System.out.print("Name?");
String name = inp.nextLine();
System.out.print("Number?");
double num = inp.nextDouble();
System.out.print("Integer?");
int num2 = inp.nextInt();
} catch(NumberFormatException e) {
System.out.println("Usage error");
}
System.out.println(name);
System.out.println(num);
System.out.println(num2);
}
}
它一直说变量、name、num 和 num2 是未定义的。我在这里做错了什么,因为我回顾了一个旧实验室,而这正是我以前所做的。有什么提示吗?
现在我修复了它,所以代码看起来像这样
public static void main(String[] args) {
try {
Scanner inp = new Scanner(System.in);
System.out.print("Name?");
String name = inp.nextLine();
System.out.print("Number?");
double num = inp.nextDouble();
System.out.print("Integer?");
int num2 = inp.nextInt();
System.out.println(name);
System.out.println(num);
System.out.println(num2);
} catch(NumberFormatException e) {
System.out.println("Usage error");
}
}
但是 catch 没有运行。那是怎么解决的。就像我希望它完全运行尝试一样,但如果出现问题,它会继续运行,然后尝试失败,然后捕获问题。
【问题讨论】:
-
您需要在
try/catch范围之外定义这些变量。 -
或者将 println 语句移到 try 块中,使它们在同一个作用域内..
-
好的,我也可以放弃尝试吗?
-
@Jack 如果您想赶上 NFE,请不要。
-
只需将 NumberFormatException 更改为 Exception。
标签: java syntax-error