Java 测试NFE的Catch语句
好的,我是一个编程课的入门学生,我正在测试NFE的catch语句。我不知道如何正确地格式化代码,但它就在这里Java 测试NFE的Catch语句,java,syntax-error,Java,Syntax Error,好的,我是一个编程课的入门学生,我正在测试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?");
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是未定义的。我在这里做错了什么,因为我在回顾一个旧的实验室,这正是我以前做过的。有什么提示吗
现在我修复了它,代码如下所示
公共静态void main(字符串[]args){
但是catch没有运行。这是如何修复的。就像我希望它完全运行try一样,但是如果出现问题,它会继续运行,然后退出try,然后捕获问题。您必须在try/catch上添加初始变量
public static void main(String[] args) {
String name = null;
double num = 0;
int num2 = 0;
try {
Scanner inp = new Scanner(System.in);
System.out.print("Name?");
name = inp.nextLine();
System.out.print("Number?");
num = inp.nextDouble();
System.out.print("Integer?");
num2 = inp.nextInt();
} catch (Exception e) {
System.out.println("Usage error");
}
System.out.println(name);
System.out.println(num);
System.out.println(num2);
}
或
您必须在try/catch上添加初始变量
public static void main(String[] args) {
String name = null;
double num = 0;
int num2 = 0;
try {
Scanner inp = new Scanner(System.in);
System.out.print("Name?");
name = inp.nextLine();
System.out.print("Number?");
num = inp.nextDouble();
System.out.print("Integer?");
num2 = inp.nextInt();
} catch (Exception e) {
System.out.println("Usage error");
}
System.out.println(name);
System.out.println(num);
System.out.println(num2);
}
或
您必须在try/catch上添加初始变量
public static void main(String[] args) {
String name = null;
double num = 0;
int num2 = 0;
try {
Scanner inp = new Scanner(System.in);
System.out.print("Name?");
name = inp.nextLine();
System.out.print("Number?");
num = inp.nextDouble();
System.out.print("Integer?");
num2 = inp.nextInt();
} catch (Exception e) {
System.out.println("Usage error");
}
System.out.println(name);
System.out.println(num);
System.out.println(num2);
}
或
您必须在try/catch上添加初始变量
public static void main(String[] args) {
String name = null;
double num = 0;
int num2 = 0;
try {
Scanner inp = new Scanner(System.in);
System.out.print("Name?");
name = inp.nextLine();
System.out.print("Number?");
num = inp.nextDouble();
System.out.print("Integer?");
num2 = inp.nextInt();
} catch (Exception e) {
System.out.println("Usage error");
}
System.out.println(name);
System.out.println(num);
System.out.println(num2);
}
或
您所引用的变量是在
try
块中定义的,因此,当您试图在try
块之外读取变量时,这些变量仅在块中可见。
您可以在
try
块中进行打印,也可以在main
函数中定义变量。您引用的变量在try
块中定义,因此,当您试图在try
块之外读取变量时,这些变量仅在块中可见。
您可以在
try
块中进行打印,也可以在main
函数中定义变量。您引用的变量在try
块中定义,因此,当您试图在try
块之外读取变量时,这些变量仅在块中可见。
您可以在
try
块中进行打印,也可以在main
函数中定义变量。您引用的变量在try
块中定义,因此,当您试图在try
块之外读取变量时,这些变量仅在块中可见。
您可以在
try
块中进行打印,也可以在main
函数中定义变量。您需要在try/catch
范围之外定义这些变量。或者将println语句移动到try块中,使它们位于同一范围内。好的,我也可以去掉try吗?@Jack如果不是的话您想捕获NFE。只需将NumberFormatException更改为Exception。您需要在try/catch
范围之外定义这些变量。或者将println语句移动到try块内,使它们位于同一范围内。好的,我也可以取消try吗?@Jack如果您想捕获NFE,则不需要。只需更改NumberFormatException选项到异常。您需要在try/catch
范围外定义这些变量。或者将println语句移动到try块内,使它们位于同一范围内。好的,我也可以取消try吗?@Jack如果您想捕获NFE,则不需要。只需将NumberFormatException更改为Exception。您需要定义这些变量在try/catch
作用域之外。或者将println语句移动到try块内,使它们位于同一作用域中。好的,我也可以取消try吗?@Jack如果您想捕获NFE,则不需要。只需将NumberFormatException更改为Exception。