为什么变量在 finally 块中需要是静态的
Why does a variable need to be static in the finally-block
我使用 Eclipse 进行编程,它告诉我是否要输出 "Input String"
Cannot make a static reference to the non-static field Input
为什么finally块中的变量是静态的?
import java.util.Scanner;
public class NameSort {
String Input;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
System.out.println("Inupt some Text");
while (sc.hasNextLine()){
String Input = sc.nextLine();
System.out.println(Input);
if (Input.toLowerCase().equals("ende")) {
System.exit(0);
sc.close();
}
}
} finally {
if (sc != null)
sc.close();
System.out.print(Input);
}
}
}
这与 finally
块无关,在 Java 中,您无法从 static
方法访问非静态成员或方法。
如果您想从 main
访问它,您应该将 Input
设为静态。
在 Java 中,您不能 use/call 来自 static
方法的非静态 variable/method。此外,除了以下代码,您的其余代码无用:
import java.util.Scanner;
public class NameSort {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input;
System.out.println("Inupt some Text");
while (!(input = sc.nextLine()).equals("ende")) {
System.out.println(input);
}
}
}
样本运行:
Inupt some Text
hello
hello
hi
hi
ende
我使用 Eclipse 进行编程,它告诉我是否要输出 "Input String"
Cannot make a static reference to the non-static field Input
为什么finally块中的变量是静态的?
import java.util.Scanner;
public class NameSort {
String Input;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
System.out.println("Inupt some Text");
while (sc.hasNextLine()){
String Input = sc.nextLine();
System.out.println(Input);
if (Input.toLowerCase().equals("ende")) {
System.exit(0);
sc.close();
}
}
} finally {
if (sc != null)
sc.close();
System.out.print(Input);
}
}
}
这与 finally
块无关,在 Java 中,您无法从 static
方法访问非静态成员或方法。
如果您想从 main
访问它,您应该将 Input
设为静态。
在 Java 中,您不能 use/call 来自 static
方法的非静态 variable/method。此外,除了以下代码,您的其余代码无用:
import java.util.Scanner;
public class NameSort {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input;
System.out.println("Inupt some Text");
while (!(input = sc.nextLine()).equals("ende")) {
System.out.println(input);
}
}
}
样本运行:
Inupt some Text
hello
hello
hi
hi
ende