这是一些示例代码:
import java.util.Scanner;
class In
{
public static void main (String[]arg)
{
Scanner in = new Scanner (System.in) ;
System.out.println ("how many are invading?") ;
int a = in.nextInt() ;
System.out.println (a) ;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行该程序并给它一个int喜欢4,那么一切都很顺利.
另一方面,如果我回答too many它并不嘲笑我有趣的笑话.相反,我得到了这个(如预期的那样):
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:819)
at java.util.Scanner.next(Scanner.java:1431)
at java.util.Scanner.nextInt(Scanner.java:2040)
at java.util.Scanner.nextInt(Scanner.java:2000)
at In.main(In.java:9)
Run Code Online (Sandbox Code Playgroud)
有没有办法让它忽略不是整数的条目或重新提示"有多少是入侵?" 我想知道如何做到这两点.
我目前正在使用split()扫描文件,其中每行包含多个字符串'~'.我读到某个地方Scanner可以用一个长文件做得更好,性能方面,所以我考虑检查出来.
我的问题是:我是否必须创建两个实例Scanner?也就是说,一个读取一行而另一个基于该行来获取分隔符的标记?如果我必须这样做,我怀疑我是否会从使用它中获得任何好处.也许我在这里错过了一些东西?