从 Java 中的多种方法获取用户输入的最佳实践?
Best practice for getting user input from multiple methods in Java?
我有一个相对基本的程序,其中有几种方法从用户那里获取输入(使用 Scanner 对象)。我正在寻找这些技术中的哪些(如果有的话)被认为是标准或最佳实践。这里我就用一种方法来举例。
- 分别在每个方法中创建一个新的扫描仪对象:
// 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);
}
- 在 main 中创建单个扫描仪对象并在每个方法中调用它:
// 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);
}
谢谢!
恕我直言,只要不降低代码的可读性,重用对象是可取的。
所以我会选择选项二。
我有一个相对基本的程序,其中有几种方法从用户那里获取输入(使用 Scanner 对象)。我正在寻找这些技术中的哪些(如果有的话)被认为是标准或最佳实践。这里我就用一种方法来举例。
- 分别在每个方法中创建一个新的扫描仪对象:
// 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);
}
- 在 main 中创建单个扫描仪对象并在每个方法中调用它:
// 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);
}
谢谢!
恕我直言,只要不降低代码的可读性,重用对象是可取的。
所以我会选择选项二。