从Java中的多个方法获取用户输入的最佳实践?

从Java中的多个方法获取用户输入的最佳实践?,java,methods,java.util.scanner,user-input,Java,Methods,Java.util.scanner,User Input,我有一个相对基本的程序,其中有几种方法(使用扫描仪对象)从用户那里获取输入。我想看看这些技术中哪一种(如果有的话)被认为是标准或最佳实践。这里我将使用一种方法作为示例 在每个方法中分别创建新的扫描仪对象: 在main中创建单个scanner对象,并在每个方法中调用它: 谢谢 IMHO最好重用对象,只要它不会降低代码的可读性 因此,我会选择第二种方法。我也同意创建并重新使用一个扫描仪几乎总是首选。 // Get date from user public static LocalDate getD

我有一个相对基本的程序,其中有几种方法(使用扫描仪对象)从用户那里获取输入。我想看看这些技术中哪一种(如果有的话)被认为是标准或最佳实践。这里我将使用一种方法作为示例

  • 在每个方法中分别创建新的扫描仪对象:
  • 在main中创建单个scanner对象,并在每个方法中调用它:

  • 谢谢

    IMHO最好重用对象,只要它不会降低代码的可读性


    因此,我会选择第二种方法。

    我也同意创建并重新使用一个
    扫描仪几乎总是首选。
    
    // Get date from user
    public static LocalDate getDateFromUser(String date_request_label){
    
        Scanner inputScan = new Scanner (System.in);
    
        System.out.print(date_request_label + " (YYYYMMDD): ");
        String input_string = inputScan.nextLine();
    
        // Split input into year/month/day
        int year  = Integer.parseInt(input_string.substring(0,4));
        int month = Integer.parseInt(input_string.substring(4,6));
        int day   = Integer.parseInt(input_string.substring(6,8));
    
        return LocalDate.of(year,month,day);
    }
    
    // Get date from user
    public static LocalDate getDateFromUser(Scanner inputScan, String date_request_label){
        System.out.print(date_request_label + " (YYYYMMDD): ");
        String input_string = inputScan.nextLine();
    
        // Split input into year/month/day
        int year  = Integer.parseInt(input_string.substring(0,4));
        int month = Integer.parseInt(input_string.substring(4,6));
        int day   = Integer.parseInt(input_string.substring(6,8));
    
        return LocalDate.of(year,month,day);
    }