Java 正确的方法是什么?未找到初始化/符号错误
我一直在练习扫描器和异常,它们是相当新的,所以可能我在这里遗漏了一些东西: 这是编译器说它找不到文件名或f的第一种方式Java 正确的方法是什么?未找到初始化/符号错误,java,compiler-errors,initialization,java.util.scanner,Java,Compiler Errors,Initialization,Java.util.scanner,我一直在练习扫描器和异常,它们是相当新的,所以可能我在这里遗漏了一些东西: 这是编译器说它找不到文件名或f的第一种方式 do { try { System.out.print("Enter the file name: "); String filename = k.nextLine(); Scanner f = new Scanner(new File(filename))
do {
try {
System.out.print("Enter the file name: ");
String filename = k.nextLine();
Scanner f = new Scanner(new File(filename));
done = true;
}
catch(FileNotFoundException ex1){
System.out.println("The file "+filename+" does not exist.");
}
catch(Exception e){
System.out.println("Unpredicted exception");
}
} while (!done);
我想我应该把它放在外面来修复它,但它以另一种方式抱怨f和文件名可能尚未初始化
Scanner k = new Scanner(System.in), f;
String filename;
boolean done = false;
// Request file from the user
do {
try {
System.out.print("Enter the file name: ");
filename = k.nextLine();
f = new Scanner(new File(filename));
done = true;
}
catch(FileNotFoundException ex1){
System.out.println("The file "+filename+" does not exist.");
}
catch(Exception e){
System.out.println("Unpredicted exception");
}
} while (!done);
将filename的值初始化为null。这样,如果输入了catch块,那么在打印错误消息时,它仍然有一个值可供使用
String filename = null;
将filename的值初始化为null。这样,如果输入了catch块,那么在打印错误消息时,它仍然有一个值可供使用
String filename = null;
将filename的值初始化为null。这样,如果输入了catch块,那么在打印错误消息时,它仍然有一个值可供使用
String filename = null;
将filename的值初始化为null。这样,如果输入了catch块,那么在打印错误消息时,它仍然有一个值可供使用
String filename = null;
在“try”块启动之前,必须始终在这种情况下声明和初始化变量。否则,您将不得不面对以下错误: '找不到符号', “变量未初始化”
在代码中,您在“try”块之外声明了字符串变量,这很好,但问题是您没有初始化它。希望它能解决您的问题。在“try”块启动之前,您必须始终在这种情况下声明并初始化变量。否则,您将不得不面对以下错误: '找不到符号', “变量未初始化”
在代码中,您在“try”块之外声明了字符串变量,这很好,但问题是您没有初始化它。希望它能解决您的问题。在“try”块启动之前,您必须始终在这种情况下声明并初始化变量。否则,您将不得不面对以下错误: '找不到符号', “变量未初始化”
在代码中,您在“try”块之外声明了字符串变量,这很好,但问题是您没有初始化它。希望它能解决您的问题。在“try”块启动之前,您必须始终在这种情况下声明并初始化变量。否则,您将不得不面对以下错误: '找不到符号', “变量未初始化”
在代码中,您在“try”块之外声明了字符串变量,这很好,但问题是您没有初始化它。希望它能解决您的问题。变量的作用域就是声明它的块。您的第一个版本在
try
块中声明了filename
,但您试图在catch
块中使用它(尽管它是try-catch
语法结构的一部分,但它是另一个块)
您的第二次尝试修复了这一问题,方法是声明变量的作用域包括它使用的所有位置,但是在java中,局部变量没有默认的初始化值;如果存在可能导致访问变量的代码路径,则必须提供一个值,然后才能为其分配值
修复方法是提供任何值(包括
null
)到try catch
之前的变量,无论是在声明时,还是在声明后的行中。变量的范围是声明它的块。您的第一个版本在try
块中声明了文件名
,但您试图在catch
块中使用它(这是一个不同的块,尽管它是一个try-catch
语法结构的一部分
您的第二次尝试修复了这一问题,方法是声明变量的作用域包括它使用的所有位置,但是在java中,局部变量没有默认的初始化值;如果存在可能导致访问变量的代码路径,则必须提供一个值,然后才能为其分配值
修复方法是提供任何值(包括
null
)到try catch
之前的变量,无论是在声明时,还是在声明后的行中。变量的范围是声明它的块。您的第一个版本在try
块中声明了文件名
,但您试图在catch
块中使用它(这是一个不同的块,尽管它是一个try-catch
语法结构的一部分
您的第二次尝试修复了这一问题,方法是声明变量的作用域包括它使用的所有位置,但是在java中,局部变量没有默认的初始化值;如果存在可能导致访问变量的代码路径,则必须提供一个值,然后才能为其分配值
修复方法是提供任何值(包括
null
)到try catch
之前的变量,无论是在声明时,还是在声明后的行中。变量的范围是声明它的块。您的第一个版本在try
块中声明了文件名
,但您试图在catch
块中使用它(这是一个不同的块,尽管它是一个try-catch
语法结构的一部分
您的第二次尝试修复了这一问题,方法是声明变量的作用域包括它使用的所有位置,但是在java中,局部变量没有默认的初始化值;如果存在可能导致访问变量的代码路径,则必须提供一个值,然后才能为其分配值
解决方法是在声明时或声明后的行中,在
try catch
之前为变量提供任何值(包括null
)。考虑更改标题以更好地反映您正在尝试的内容