调用扫描仪方法而不使用读取内容不好?

我最近遇到了Java的Scanner的一些麻烦。 当调用诸如nextInt() ,在按Enter之后它不会消耗newline 。 我的解决方案是:

package scannerfix;

import java.util.Scanner;

public class scannerFix {
    static Scanner input = new Scanner(System.in);

    public static int takeInt() {        
        int retVal = input.nextInt();
        input.nextLine();
        return retVal;
    }

    public static void main(String[] args) {
        int num = scannerFix.takeInt();
        String word = input.nextLine();
        System.out.println("n" + num + "t" + word);
    }
}

它的工作原理,但这是我的问题 :这有什么不好?


“Enter”没有被使用,因为它等于“ n”(在Windows / Linux等),这是一个标准的分隔符。 你已经用input.nextLine();跳到下一行了input.nextLine();
所以你的解决方案很好!

有关分隔符如何处理Scanner类的更多信息,请参阅:
如何在Java扫描器中使用分隔符?


一个问题是它可以隐藏输入中的一些错误。 如果你期望在一行上有一个整数,而下一行是另一个整数,但是第一行包含“2 a”,那么你会将它读为2.对于某些情况,你可能想要拒绝这个输入,显示错误。

链接地址: http://www.djcxy.com/p/78357.html

上一篇: Is calling Scanner methods without using the read content bad?

下一篇: Scanner line separator not working with intellij IDEA