我环顾四周,似乎无法找到答案。我创建了一个程序,输入一个与国际象棋棋盘相对应的数字,并一直提供一个答案,最多可以打印一个错误报告。我无法找到关闭扫描仪的方法。我是java的新手,需要一些关于我的代码的帮助:
while (true) {
//learned the import scanner from Greg and managed to get it working with my code :)
System.out.println("Please select chess square from 1 - 25");
Scanner scan = new Scanner(System.in);
final int SIZE = 5;
//the plus one makes it start in the correct point
int SQUARENUM = scan.nextInt()+1;
int grains = 1;
int j = 1;
int tGrains = 0;
if (SQUARENUM > 26){
System.out.println("****************---------------****************");
System.out.println("** ERROR Only 25 squares to choose from ERROR **");
System.out.println("****************---------------****************");
continue;}
//still trying to get it to close without the error.
//if(scan!=null)
//scan.close();
System.out.println("The amount of squares on the 5 by 5 board is: " + (SIZE*SIZE));
System.out.println("Looking at Square:"+(SQUARENUM - 1));
while(j < SQUARENUM){
System.out.println("Grains of wheat on square:" + j + " is:" + grains);
grains *= 2;
tGrains = tGrains + grains;
j++;
}
System.out.println(" *** Total Grains of Wheat = " + (tGrains/ 2) + " ***");
}
答案 0 :(得分:1)
循环的第一次迭代会很好,你可以做
scan.close();
问题是当循环进入第二次迭代时。你打电话给
scan.nextInt();
关闭扫描仪后。关闭后无法再次使用扫描仪。
所以你应该将scan.close()
移到循环之外。
答案 1 :(得分:0)
完成使用后关闭Scanner
来电close
。
通常,您应该在try-catch-finally块中访问扫描仪并关闭finally块中的扫描仪,以确保它始终关闭。
有关使用Scanner
您可能还想查看Java 7中的try with resource功能。