java 使在main()中声明的Scanner对象可在所有方法中访问

km0tfn4u  于 2023-03-11  发布在  Java
关注(0)|答案(3)|浏览(138)

我试图声明一个新的Scanner对象。
它在main()方法中运行良好,但在其他方法中不可访问。

import java.util.Scanner;

public class Exe1GenericSort {

    public static void main(String[] args) {
        Scanner input= new Scanner(System.in);

        start();

        int i = input.nextInt();
    }

    public static void start() {
        int i = input.nextInt();
        //...
    }
}

我尝试在main()方法之上编写Scanner input = new Scanner(System.in);,但它仍然不起作用...

gblwokeq

gblwokeq1#

您需要将Scanner声明为main函数之外的对象,然后可以在其他函数中使用它。

import java.util.Scanner;

class ScannerTest {

    private static Scanner scanner;

    public static void main(String[] args){
        scanner = new Scanner(System.in);
        start();
    }

    private static void start(){
        String input = scanner.nextLine();
        System.out.println("Input: " + input);
    }
}

注意:scanner对象以及start函数需要是静态的,以便您在main函数内部访问它们。

kxkpmulp

kxkpmulp2#

解决了,现在它工作得很好!

import java.util.Scanner;

public class Exe1GenericSort {

    private static final Scanner input = new Scanner (System.in);

    public static void main(String[] args) {
    //...
svdrlsy4

svdrlsy43#

public static void main(String[] args) {
    Scanner input= new Scanner(System.in);

    int x = start(input);
    System.out.println("enter another number");
    int i = input.nextInt();

    System.out.println("a number:" + x);
    System.out.println("another number" + i);
}

public static int start(Scanner scan) {
    System.out.println("Please enter a number");
    int x = scan.nextInt();
    return x;
}

要在另一个方法中使用Scanner,请在参数中将Scanner发送到该方法,即先发送start(Scanner scan),然后发送return x,以测试并打印main()方法中的值。

相关问题