Integer.parseInt(scan.next()) or scan.nextInt()?



使用

import java.util.Scanner;
.
.
.
Scanner scan = new Scanner(System.in);
.
.
. 
Integer.parseInt(scan.next());

import java.util.Scanner;
.
.
.    
Scanner scan = new Scanner(System.in);
.
.
.
scan.nextInt();    

哪一个更有用,或者更准确;哪个跑得更快?

现在,这只是Sun的实现,但下面是下一个int (int基数)的实现。

注意它使用了一个特殊的模式(integerPattern())。这意味着如果您使用next(),您将使用默认模式。现在,如果你只是做了一个new Scanner(),你将使用一个典型的空白模式。但如果你用的是不同的模式,你就不能保证你能听懂一个单词。你可能是在接台词什么的。

在一般情况下,我强烈推荐使用nextInt(),因为它为您提供了一个抽象,减少了出错的可能性,并在出错时提供了更多的信息。

在你空闲的时候阅读:

public int nextInt(int radix) {
    // Check cached result
    if ((typeCache != null) && (typeCache instanceof Integer)
    && this.radix == radix) {
        int val = ((Integer)typeCache).intValue();
        useTypeCache();
        return val;
    }
    setRadix(radix);
    clearCaches();
    // Search for next int
    try {
        String s = next(integerPattern());
        if (matcher.group(SIMPLE_GROUP_INDEX) == null)
            s = processIntegerToken(s);
        return Integer.parseInt(s, radix);
    } catch (NumberFormatException nfe) {
        position = matcher.start(); // don't skip bad token
        throw new InputMismatchException(nfe.getMessage());
    }
}

我的直觉是扫描。下一步,扫描。Next可以在换行符或空格或其他垃圾中读取。可能需要更长的时间来筛选垃圾字符

哪一个更快,我认为手动解析Integer。parseInt比scan更快。nextInt会做一个基于正则表达式的匹配,然后做一个Integer。对值

进行parseInt

http://download.oracle.com/javase/1 5 0/docs/api/java/util/Scanner.html # nextInt ()

干杯!

nextInt()方法更方便。

在应用用户验证时使用Integer.parseInt()

假设您希望程序接受用户输入为5,并且希望在用户键入'——5'时显示自定义消息,其中'——'为空格。在这种情况下,Integer.parseInt()是有用的。

最新更新