无法将状态与大写相匹配

时间:2013-12-10 18:11:27

标签: java arrays file

我创建了两个数组,并将状态分配给一个数组和大写字母到我从文本文件中获取的另一个数组。文本文件的格式如下:

科罗拉多,丹佛,

威斯康星,

..........等

我的代码如下:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class StatesAndCapitals {

    public static void main(String[] args) throws FileNotFoundException {
        FileInputStream is = new FileInputStream("capitals.txt");
        Scanner input = new Scanner(is);
        String[] states = new String[50];
        String[] capitals = new String[50];
        for (int i = 0; i < states.length; i++){
            String currentLine = input.nextLine();
            int a = currentLine.indexOf(",");
            String states1 = currentLine.substring(0, a);
            states[i] = states1;
            int b = currentLine.lastIndexOf(",");
            String capitals1 = currentLine.substring(a+1, b);
            capitals[i] = capitals1;
        }//end for loop
    }
}

我的计划的目的是问“(空白)的资本是什么?”

然后我需要告诉那个人他们是否正确。我遇到的问题是我不知道如何检查麦迪逊是否是威斯康星州的首府。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

尝试使用:

public boolean isCapitalOfState(String capital, String state) {
    for (int i = 0; i < state.length; i++) {
        if (state[i].equals(state) && capitals[i].equals(capital)) {
            return true;
        }
    }
    return false;
}

循环遍历state s数组,一旦找到匹配项,就会检查capital是否匹配,如果是return true。如果它没有找到任何内容,则默认为return false

请注意,有很多更简单的方法可以实现您的行为。通常,List s优于Array s。

编辑:我看到你的问题要求更多,我们这里不能给你一个完整的程序去做。但请记住,当您已经在state中获得索引时,您可以更轻松地检查结果。

答案 1 :(得分:0)

这些设置就像并行数组一样正确吗?例如states [0] = colorado和capitals [0] = denver的含义,它看起来像这样,但如果它确实设置为这样,则使用state的索引作为大写的索引,并将输入与之比较。 例如,

System.out.println("What is the capital of " + states[i]);
capital = input.nextLine();
if(capital.equals(capitals[i]){
    return true;
}
else{
    return false;
}

答案 2 :(得分:0)

public static void main(String[] args) {
    Scanner userInput = null;
    Scanner scanner = null;
    try {
        userInput = new Scanner(System.in);
        scanner = new Scanner(new File("capitals.txt"));
        while (scanner.hasNext()) {
            String[] stateAndCapital = scanner.next().split(",");
            System.out.println(String.format("What is the capital of %s?",
                    stateAndCapital[0]));
            System.out.println(userInput.next().equals(stateAndCapital[1]));
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } finally {
        scanner.close();
        userInput.close();
    }
}

输出:

What is the capital of Colorado?
dunno
false
What is the capital of Wisconsin?
Madison
true