Java 调用scanner参数

Java 调用scanner参数,java,parameter-passing,java.util.scanner,Java,Parameter Passing,Java.util.scanner,我创建了两个类,Method和ActionClass。在Mehod类中,我使用Scanner参数创建了passingParameters方法,在ActionClass中,我创建了一个对象,称为passingParameters方法,如下所示。但我不知道如何调用Scanner参数。看起来调用Scanner和其他参数之间有区别。还是我错了?如何在ActionClass中调用Scanner 它可以是这样的: 如果您想使用ActionClass类的示例main方法中指出的Scanner对象,则需要在接受

我创建了两个类,Method和ActionClass。在Mehod类中,我使用Scanner参数创建了passingParameters方法,在ActionClass中,我创建了一个对象,称为passingParameters方法,如下所示。但我不知道如何调用Scanner参数。看起来调用Scanner和其他参数之间有区别。还是我错了?如何在ActionClass中调用Scanner


它可以是这样的:

如果您想使用ActionClass类的示例main方法中指出的Scanner对象,则需要在接受Scanner对象的method类中创建构造函数:

package whateverpackage;

import java.util.Scanner;

public class Method {

    // Declare a Scanner Object field.
    // This will make the Object global
    // to the entire Class.
    private Scanner scannerInput;

    // Class Constructor
    public Method (Scanner input) {
        this.scannerInput = input;    
    }

    public void passingParameters(){
        System.out.println("Enter a integer value for Parameter: ");
        int numInput = scannerInput.nextInt();
        input.nextLine(); // Empty scanner buffer
        System.out.println("Supplied value was: " + numInput);
    }
}
然后你的ActionClass:

如果您打算广泛使用Method类中的Scanner对象来实现各种方法,那么这将非常方便。但是,如果您只打算偶尔在方法类中使用Scanner对象,那么我认为@user7在comment中描述的方法可能是一种方法,在这种情况下,不需要构造函数来执行任务:

package whateverpackage;

import java.util.Scanner;

public class Method {

    // Method accepts a Scanner Object as an argument.
    public void passingParameters(Scanner input){
        System.out.println("Enter a integer value for Parameter: ");
        int numInput = input.nextInt();
        input.nextLine(); // Empty scanner buffer
        System.out.println("Supplied value was: " + numInput);
    }
}
然后你的ActionClass:

Scanner对象也可以声明为类字段,在ActionClass类中是全局的,然后从该类中的任何方法使用,而无需始终声明Scanner的新实例。但是,由于主方法是静态方法,因此需要将对象声明为静态。ActionClass类中使用此Scanner对象的任何方法也需要声明为静态。在这种情况下没什么大不了的,但总有一天它会成为现实。要解决此问题,请不要在main方法中使用对象,请使用不同的方法:

package whateverpackage;

import java.util.Scanner;

public class ActionClass {

    private Scanner scanner = new Scanner(System.in);

    // *****************************************
    public static void main(String[] args) {
        new ActionClass().startApp(args);
    }
    // *****************************************

    private void startApp(String[] args) {
        Method newObject = new Method();
        newObject.passingParameters(scanner);

        justAnotherMethod();
    }

    private void justAnotherMethod () {
        System.out.println("What's your name: ");
        String name = scanner.nextLine();
        System.out.println("Your Name is: " + name);
    }

}
方法newObject=新方法;Scanner Scanner=新ScannerSystem.in;newObject.PassingParametersCanner;
package whateverpackage;

import java.util.Scanner;

public class Method {

    // Method accepts a Scanner Object as an argument.
    public void passingParameters(Scanner input){
        System.out.println("Enter a integer value for Parameter: ");
        int numInput = input.nextInt();
        input.nextLine(); // Empty scanner buffer
        System.out.println("Supplied value was: " + numInput);
    }
}
package whateverpackage;

import java.util.Scanner;

public class ActionClass {

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

}
package whateverpackage;

import java.util.Scanner;

public class ActionClass {

    private Scanner scanner = new Scanner(System.in);

    // *****************************************
    public static void main(String[] args) {
        new ActionClass().startApp(args);
    }
    // *****************************************

    private void startApp(String[] args) {
        Method newObject = new Method();
        newObject.passingParameters(scanner);

        justAnotherMethod();
    }

    private void justAnotherMethod () {
        System.out.println("What's your name: ");
        String name = scanner.nextLine();
        System.out.println("Your Name is: " + name);
    }

}