Теперь предоставлено, это только реализация Sun, но ниже - реализация nextInt (int radix).
Обратите внимание, что используется специальный шаблон (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());
}
}