0

我编写了使用 java 扫描仪读取整数的方法。该方法在关闭扫描仪之前工作正常,但是当我尝试关闭扫描仪时,程序总是在第一次扫描期间崩溃。

有谁知道这段代码有什么问题?

private int SINT()
{
    System.out.println("Integer");
    Scanner scan = new Scanner(System.in);
    int p = 0;
    try 
    {
        p = scan.nextInt();
    }
    catch(Exception e)
    { 
        System.out.println("Not integer");
    }
    scan.close();
    return p;
}
4

2 回答 2

3

您始终可以在 Java 1.7 中可用的 try-w/resources 块中创建扫描器。由于它实现了AutoClosable接口,因此您可以省略scan.close().

int p = 0;
try (Scanner scan = new Scanner(System.in))
{
    p = scan.nextInt();
}
catch (Exception e)
{
    System.out.println("Not integer");
}
return p;
于 2013-04-17T15:18:50.310 回答
1

java.util.Scanner.throwFor 处的 java.util.NoSuchElementException(未知来源)

当您尝试从输入中读取没有任何令牌时会导致您的异常

因此,当您调用next时,您应该检查扫描仪是否有一个。

像这样 :

if(scan.hasNextInt())
 p =scan.nextInt();
于 2013-04-17T15:22:40.733 回答