我搜索了stackoverflow非常彻底,并尝试了其他问题的一些建议,但没有解决我的问题。我无法看到为什么这不应该起作用的任何原因。通常我会说忘记它并让垃圾收集器处理它但我的教练要求每次都关闭扫描仪。是的,这是一项家庭作业。
以下代码中的所有内容都可以正常工作,但是当我尝试关闭扫描程序时,它会在Eclipse中出现无法访问的代码错误。我试图在不同的地方打开扫描仪,但这会导致运行时错误,因为每次逻辑运行它都需要扫描程序。当我把input.close();在主要方法的最后(在我已完成的其他任务中工作正常),但有些东西在这里工作。这是代码的略有删节版本:
import java.util.Scanner;
public class stateBird {
public static int stateInformation(String stateBirdFlower[][],String state)
{
int arrayPos = -1;
boolean found = false;
for (int index = 0; index < stateBirdFlower.length && !found; index++)
{
if(stateBirdFlower[index][0].equalsIgnoreCase(state))
arrayPos=index;
}
return arrayPos;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String[][] stateInformation = new String[][] {
{"Alabama", "Yellowhammer", "Camelia"},
{"Alaska", "Willow Ptarmigan", "Forget-Me-Not"},
{"Arizona", "Cactus Wren", "Saguaro Cactus Blossom"}
};
while(true) {
System.out.print("Enter the full name of the state you would like to view or type 'none' if you would like to quit: ");
String stateName = input.nextLine();
if(stateName.equalsIgnoreCase("None")) {
System.exit(0);
}
else {
int position = stateInformation(stateInformation, stateName);
if(position != -1) {
System.out.println("\n" + stateName + "'s " + "Bird is: " + stateInformation[position][1]);
System.out.println(stateName + "'s " + "Flower is: " + stateInformation[position][2] + "\n" );
}
else {
System.out.println("Invalid State Entered");
}
} //End if (stateName...) statement
} //End while(true) statement
input.close();
}//End main method
}//End class stateBird
正如我上面所说,代码中的所有内容都运行良好,那么我的input.close()会发生什么?它在主要方法的最开始打开,并在最后关闭,每次都在我之前工作,这里有什么不同?
谢谢!