首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与TreeMaps合作(21.9- Java入门,梁,第10版)

与TreeMaps合作(21.9- Java入门,梁,第10版)
EN

Stack Overflow用户
提问于 2015-06-02 20:25:31
回答 1查看 67关注 0票数 1

我应该用TreeMaps编写一个返回美国某一州首都的程序。然而,程序在我运行它时返回null,甚至在我有机会输入任何东西之前。有人能告诉我怎么回事吗?

代码语言:javascript
复制
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“的格式使每一行上都有一个状态及其大写,用逗号(没有空格)分隔,如下所示:

阿拉巴马州蒙哥马利

阿拉斯加朱诺

亚利桑那州,凤凰城

等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-02 20:48:44

检查一下,我修复了从文本文件读取的部分,并填充了TreeMap。我测试并工作得很好。

代码语言:javascript
复制
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()));
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30605908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档