java中的循环错误
我试图创建一个方法,在字符串数组中搜索输入状态并返回索引。如果用户输入的查询不在数组中,我希望它请求一个新的状态进行搜索。现在我陷入了困境。我知道我正在进入一个有效的状态,但它一直在要求一个有效的状态,并且会让我退出循环 多谢各位java中的循环错误,java,for-loop,Java,For Loop,我试图创建一个方法,在字符串数组中搜索输入状态并返回索引。如果用户输入的查询不在数组中,我希望它请求一个新的状态进行搜索。现在我陷入了困境。我知道我正在进入一个有效的状态,但它一直在要求一个有效的状态,并且会让我退出循环 多谢各位 public static void main(String[] args) throws FileNotFoundException { String[] stateNames = importFile("stateNames.txt"); Stri
public static void main(String[] args) throws FileNotFoundException {
String[] stateNames = importFile("stateNames.txt");
String[] nicknames = importFile("nicknames.txt");
String[] populations = importFile("population.txt");
String[] flowers = importFile("flowers.txt");
String[] Capital = importFile("capitals.txt");
int index = askState(stateNames);
System.out.println("The index of your state is"+ index);
}
static final int NUM_STATES = 50;
public static String[] importFile(String fileName) throws
FileNotFoundException {
String[] array = new String[NUM_STATES];
File inputFile = new File(fileName);
Scanner scanner = new Scanner(inputFile);
for (int i = 0; i < NUM_STATES; i++) {
array[i] = scanner.nextLine();
}
return array;
}
public static int askState(String[] stateNames) {
Scanner keyboard = new Scanner(System.in);
String state;
int statePosition = -1;
System.out.println("Please enter a state that you would like to search:");
state = keyboard.nextLine();
{
for (int i = 0; i < NUM_STATES; i++) {
if (state.equals(stateNames[i]))
statePosition = i;
else {
System.out.println("Please enter a valid state:");
state = keyboard.next();
}}
return statePosition;
}
}
}试试这个:
public static int askState(String[] stateNames) {
Scanner keyboard = new Scanner(System.in);
String state;
int statePosition = -1;
System.out.println("Please enter a state that you would like to search:");
state = keyboard.nextLine();
{
for (int i = 0; i < NUM_STATES; i++) {
if (state.equals(stateNames[i])){
statePosition = i;
return stateposition;
}
}
System.out.println("Please enter a valid state:");
}
return statePosition;
}
}
您已经习惯了Java中的集合类。如果不需要使用循环,我会将项目导入集合,然后可以询问集合是否存在元素。 见: 虽然在您的情况下这并不重要,但从长远来看,集合的性能要比用蛮力方式搜索数组要好
关于您的具体问题:确保数组中的值与用户输入的值相同。您可以使用一个简单的“equals”和一个只包含一个状态的伪数组来测试它,然后自己输入该状态。您可以告诉用户,一旦在数组中发现一个与输入状态不相等的项,就立即输入一个有效状态。只有在确定数组中的所有项与输入的状态不同时,才能执行此操作。只有检查了数组中的每个元素,您才会知道。我的建议是:在IndexOfitemArrayString[]数组、字符串项中编写一个方法