提问者:小点点

在不使用读取内容的情况下调用扫描仪方法是否不好?


我最近在使用Java的Scanner时遇到了一些麻烦。当调用nextInt()等方法时,它在按Enter后不会使用换行符。我的解决方案是:

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);
    }
}

它起作用了,但我的问题是:这有什么不好的吗?


共2个答案

匿名用户

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

有关Scanner类的分隔符如何工作的更多信息,请参阅:
如何在JavaScanner中使用分隔符?

匿名用户

一个问题是它可以隐藏输入中的一些错误。如果您希望一行有一个整数,下一行有另一个整数,但第一行包含“2 a”,那么您将其读取为2。对于某些情况,您可能希望拒绝此输入并显示错误。