为了账号安全,请及时绑定邮箱和手机立即绑定

Java map.get() 方法返回 null

Java map.get() 方法返回 null

慕婉清6462132 2021-05-31 13:54:56
我正在创建一个程序,在其中我从 .txt 文件中读取 50 个州及其首都。然后我运行一个 while 循环并将每个状态存储在一个 ArrayList 中,并将每个大写字母存储在另一个 ArrayList 中。我将这两个 ArrayList 转换为常规数组,然后运行 for 循环将每个状态存储为映射中的键,并将每个大写存储为映射中的值。我的问题是,当我使用 map.get() 方法返回特定状态的首都时,它只是返回“null”,我不确定为什么会这样。这是我的代码:import java.util.*;import java.io.File;import java.io.FileNotFoundException;public class ChapterOneBasics {    public static void main(String[] args) throws FileNotFoundException {        Map<String, String> usCapitals = new HashMap<String, String>();        ArrayList<String> aList = new ArrayList<>();        ArrayList<String> bList = new ArrayList<>();        int x = 0;        File file = new File("C:\\Private\\Private\\Private\\capitals.txt");        Scanner sc = new Scanner(file);        while(sc.hasNextLine()) {           if(x % 2 == 0) {                aList.add(sc.nextLine());           }           else                bList.add(sc.nextLine());           x++;}              String[] usStates = aList.toArray(new String[aList.size()]);              String[] uSCapitals = bList.toArray(new String[bList.size()]);              for(int y = 0; y < uSCapitals.length; y++) {                 usCapitals.put(usStates[y], uSCapitals[y]);      }               System.out.println(usCapitals.get("Montana"));  }}如您所见,我已将每个州以字符串格式存储到 Map 中,但是每当我调用一个州来查找首都时,我都会将其作为输出:null我不确定是什么问题。
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

您的问题出在 for 循环中,您希望将州和首都放入地图中:

 usCapitals.put(usStates[y], uSCapitals[y]);

您有两个选择:

  1. 要么改变尝试从地图中获取值的方式,而不是这样做get("Montana"),而是搜索 state 作为键get("MT")

  2. 如果你想这样做get("Montana"),那么你想翻转键和值的顺序,以使其成为可能。

然后你把地图改成这样:

 usCapitals.put(uSCapitals[y], usStates[y]);


查看完整回答
反对 回复 2021-06-02
  • 2 回答
  • 0 关注
  • 673 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信