在java中使扫描程序正常关闭的问题

时间:2013-04-17 15:13:30

标签: java eclipse

我编写了使用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;
}

2 个答案:

答案 0 :(得分:3)

您始终可以在Java 1.7中提供的try-w / resources块中创建Scanner。由于它实现了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;

答案 1 :(得分:1)

  

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

当您没有任何

时尝试从输入读取令牌时,会导致异常

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

像这样:

if(scan.hasNextInt())
 p =scan.nextInt();