我正在编写的java编程手册介绍中的练习要求我使用scanner类从命令行检索输入。本书中的每个示例(以及我在此处看到的代码)都以所需的相同方法创建和使用扫描仪对象,例如:
import java.util.Scanner;
public class DemoScanner {
public static void main(String[] args) {
Scanner inputDevice = new Scanner(System.in);
System.out.println("Enter your first name: ");
String firstName = inputDevice.nextLine();
System.out.println("Enter your middle name: ");
String middleName = inputDevice.nextLine();
System.out.println("Enter your last name: ");
String lastName = inputDevice.nextLine();
inputDevice.close();
System.out.println("Your name is " + firstName + " " + middleName + " " + lastName);
}
}
我想知道为什么这个方法比下面这样的方法更受欢迎(特别是因为execise要求我检索九个字符串的输入)
import java.util.Scanner;
public class DemoScanner {
public static void main(String[] args) {
String firstName = prompt("Enter your first name: ");
String middleName = prompt("Enter your middle name: ");
String lastName = prompt("Enter your last name: ");
System.out.println("Your name is " + firstName + " " + middleName + " " + lastName);
}
private static String prompt(String message) {
Scanner inputDevice = new Scanner(System.in);
System.out.println(message);
return inputDevice.nextLine();
}
}
请记住,我是Java和编程的新手。
答案 0 :(得分:1)
这样做是没有错的,从长远来看,它可以为你省去几行,但这并不常见,因为你可以创建一次扫描仪并重复使用它,就像你上面所做的那样。 / p>
这是基于样式的,但是多次使用一个Scanner非常简单,避免了代码中不必要的复杂性,这很重要(特别是在大型项目中)。
当你逐行浏览代码时,你的第一个例子对我来说更具可读性,但这只是我的观点,因为这是一个相当主观的问题。唯一真正的缺点是,每次调用prompt()
方法时都要创建一个新的扫描仪,这是不必要的。
另请注意,您忘记在方法中关闭扫描仪。
答案 1 :(得分:-1)
在你的情况下,你是为每次调用提示方法创建Scanner对象,这不是很好的做法。
此外,您还没有关闭扫描仪。
恕我直言,这本书的代码更容易阅读......