扫描仪类方法

时间:2016-06-21 16:54:26

标签: java methods

好的,所以我是一个完全的初学者,如果这对你来说是一个非常愚蠢的问题,我很抱歉。

所以我开始使用Scanner类,对我来说似乎很奇怪。

例如,这些代码行:

Scanner scan = new Scanner(System.in);

System.out.print("Write string: ");

if(scan.hasNextInt()){

    int x = scan.nextInt();
}
else
    System.out.println("Only integers allowed");

如果我只是在“if”条件中输入输入,它如何知道用户是否输入了一个整数?

2 个答案:

答案 0 :(得分:2)

根据Java文档:

hasNextInt()"如果此扫描仪输入中的下一个标记可以解释为int值,则返回true。"因此,此方法查看输入,如果其中的下一个是整数,则返回true。扫描仪尚未“读取”#34;将输入放入变量中的输入。

答案 1 :(得分:0)

如果您要查看hasNextInt的实际实现,那么您可以看到它是如何知道的:

/**
 * Returns true if the next token in this scanner's input can be
 * interpreted as an int value in the specified radix using the
 * {@link #nextInt} method. The scanner does not advance past any input.
 *
 * @param radix the radix used to interpret the token as an int value
 * @return true if and only if this scanner's next token is a valid
 *         int value
 * @throws IllegalStateException if this scanner is closed
 */
public boolean hasNextInt(int radix) {
    setRadix(radix);
    boolean result = hasNext(integerPattern());
    if (result) { // Cache it
        try {
            String s = (matcher.group(SIMPLE_GROUP_INDEX) == null) ?
                processIntegerToken(hasNextResult) :
                hasNextResult;
            typeCache = Integer.parseInt(s, radix);
        } catch (NumberFormatException nfe) {
            result = false;
        }
    }
    return result;
}

注意hasNextInt()只需致电hasNextInt(int radix),其中defaultRadix = 10

public boolean hasNextInt() {
    return hasNextInt(defaultRadix);
}