如果我们想在第一次声明它的 main 方法之外的方法中使用它,谁能告诉我为什么要再次声明 Scanner
类对象?
例如:
public static void main(String[] args) {
Scanner j = new Scanner(System.in);
String val = j.next();
}
static void lod() {
Scanner j = new Scanner(System.in);
String m = j.next();
}
为什么我应该在 lod() 方法中使用 Scanner
类对象之前再次声明它?
最佳答案
... why we declare a scanner class object the second time if we want to use it in a method outside the main method?
您不必这样做,而且这也不是一种干净的方法。我会使用以下方法之一:
将
Scanner
对象声明为实例变量。但是,您将无法在static
方法(包括main
)中直接使用它,因为您无法访问非static
> 直接在static
方法中添加成员。在静态
方法中,您将只能通过类的实例访问实例变量,例如import java.util.Scanner; public class MyClass { Scanner scanner = new Scanner(System.in); public static void main(String[] args) { MyClass obj = new MyClass(); System.out.print("Enter a word: "); System.out.println(obj.scanner.nextLine()); } static void lod() { MyClass obj = new MyClass(); String m = obj.scanner.next(); } }
将
Scanner
对象声明为类变量(即类级别的静态变量),例如import java.util.Scanner; public class MyClass { static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { System.out.print("Enter a word: "); System.out.println(scanner.nextLine()); } static void lod() { String m = scanner.next(); } }
将
Scanner
对象传递给从main
调用的方法,例如import java.util.Scanner; public class MyClass { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter a word: "); System.out.println(scanner.nextLine()); } static void lod(Scanner scanner) { String m = scanner.next(); } }
关于java - 为什么要在 main() 和外部方法中声明一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64619712/