为扫描仪使用单独的方法是错误的吗?

时间:2014-07-13 15:20:30

标签: java java.util.scanner

我正在编写的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和编程的新手。

2 个答案:

答案 0 :(得分:1)

这样做是没有错的,从长远来看,它可以为你省去几行,但这并不常见,因为你可以创建一次扫描仪并重复使用它,就像你上面所做的那样。 / p>

这是基于样式的,但是多次使用一个Scanner非常简单,避免了代码中不必要的复杂性,这很重要(特别是在大型项目中)。

当你逐行浏览代码时,你的第一个例子对我来说更具可读性,但这只是我的观点,因为这是一个相当主观的问题。唯一真正的缺点是,每次调用prompt()方法时都要创建一个新的扫描仪,这是不必要的。

另请注意,您忘记在方法中关闭扫描仪。

答案 1 :(得分:-1)

在你的情况下,你是为每次调用提示方法创建Scanner对象,这不是很好的做法。

此外,您还没有关闭扫描仪。

恕我直言,这本书的代码更容易阅读......