我在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);
}
}
}
答案 0 :(得分:0)
System.in是一个InputStream,意味着它读取二进制内容。除非事先将其正确转换为文本,否则扫描仪将无法正常工作。特别是,如果您没有为Scanner提供CharSet,它将使用您平台的默认值,可能会有所不同。
或者,您可能希望使用java.io.Console从标准输入中读取文本。
答案 1 :(得分:0)
尝试以下操作,这只会检查扫描仪确实包含整数。
if (scanner.hasNextInt()) {
int n =scanner.nextInt();
}