java - 使用 TreeMap(21.9- Java 简介,Liang,第 10 版)

标签 java debugging treemap

我应该编写一个程序,使用 TreeMaps 返回美国给定州的首府。然而,当我运行该程序时,在我有机会输入任何内容之前,该程序返回 null。谁能告诉我出了什么问题吗?

public class Map {

  private TreeMap<String, String> pairs;

  public Map() {
    pairs = new TreeMap<String, String>();
  }

  public void readFrom(String fileName) {
    Scanner input = null;
    try {
        input = new Scanner(new File(fileName));
    } catch (Exception ex) {
        ex.printStackTrace();
        System.exit(-1);
    }

    while (input.hasNext(" , ")) {
        pairs.put(input.next(), input.next());
    }
  }

  public String get(String key) {
    return pairs.get(key);
  }

}

public static void main(String[] args) {

    Map USA = new Map();
    USA.readFrom("states_and_capitals.txt");

    System.out.print("Enter a state: ");
    Scanner input = new Scanner(System.in);
    System.out.println(USA.get(input.toString()));
}

程序读取的文本文件“states_and_capitals.txt”的格式如下:每行都有一个州及其大写字母,用逗号分隔(无空格),如下所示:

阿拉巴马州,蒙哥马利

阿拉斯加,朱诺

亚利桑那州、菲尼克斯

等等

最佳答案

检查这一点,我修复了您从文本文件读取并填充 TreeMap 的部分。我测试过,工作正常。

public class Map {

    private TreeMap<String, String> pairs;

    public Map() {
        pairs = new TreeMap<String, String>();
    }

    public void readFrom(String fileName) {
        try {
            Scanner input = new Scanner(new File(fileName));
            while (input.hasNextLine()) {
                String [] parts = input.nextLine().split(",");
                if (parts.length == 2)
                    pairs.put(parts[0], parts[1]);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            System.exit(-1);
        }
    }

    public String get(String key) {
        return pairs.get(key);
    }

    public static void main(String[] args) {
        Map USA = new Map();
        USA.readFrom("states_and_capitals.txt");

        System.out.print("Enter a state: ");
        Scanner input = new Scanner(System.in);
        System.out.println(USA.get(input.nextLine()));
    }
}

关于java - 使用 TreeMap(21.9- Java 简介,Liang,第 10 版),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30605908/

相关文章:

java - 显示 'Failed to load Main-Class manifest attribute from TestExample.jar'

java - Mockito 错误不适用于参数(无效)

java - 如何使用比较器实现Treemap?

java - TreeMap Java 返回空 ArrayList

java 查找字符串是否包含另外2个字符串

Java : logging execution history as XML

debugging - 尽管代码显然正在运行,但Intellij IDEA 11.0.2断点中的Grails 2.0.4不会挂起

c - 如何使用多维数组的指针访问内存?

c++ - 强制 Visual Studio 进入 STL 类/函数

java - 在 Java TreeMap 中加速顺序放置