java中的运行时错误

时间:2012-02-17 16:51:21

标签: java java.util.scanner

我在spoj上做了一个问题来计算没有可以放在n * n板上的主教而不会互相攻击..

我决定使用java ..但我的代码是运行时错误..帮助。

代码:

import java.math.BigInteger;
import java.util.*;

class Bishop {

    public static void main(String[] args) throws java.lang.Exception {

        Scanner scanner = new Scanner(System.in);

        while (true) {
            int n = scanner.nextInt(); /*Error occurs here*/
            if (n == 1) {
                System.out.println("1");
                continue;
            }

            BigInteger bi = BigInteger.valueOf(n);

            BigInteger c = bi.multiply(BigInteger.valueOf(2));
            BigInteger d = c.subtract(BigInteger.valueOf(2));

            System.out.println(d);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

System.in是一个InputStream,意味着它读取二进制内容。除非事先将其正确转换为文本,否则扫描仪将无法正常工作。特别是,如果您没有为Scanner提供CharSet,它将使用您平台的默认值,可能会有所不同。

或者,您可能希望使用java.io.Console从标准输入中读取文本。

答案 1 :(得分:0)

尝试以下操作,这只会检查扫描仪确实包含整数。

if (scanner.hasNextInt()) {

   int n =scanner.nextInt(); 
}