好的,所以我是一个完全的初学者,如果这对你来说是一个非常愚蠢的问题,我很抱歉。
所以我开始使用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”条件中输入输入,它如何知道用户是否输入了一个整数?
答案 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);
}