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

将数据从双数组传输到 HashMap

将数据从双数组传输到 HashMap

潇湘沐 2022-07-20 20:55:54
创建一个双数组(一行用于州,一行用于国会大厦),我试图在 for 循环中使用“map.put”将数组“key(states)”和“value(capitols)”保存到 HashMap . 在分配新的 HashMap (hMap = getInfo(); 后使用来自用户输入的键时,我的输出返回“null”。我不太确定我做错了什么,但我感觉我在 for环形。public class HashMapProgram {    public static void main (String[]args) {        Scanner input = new Scanner(System.in);        //Assign contents of map in getInfo to hMap        HashMap<String, String> hMap = getInfo();        //Prompting user to input a state (key)            System.out.print("Enter a state, or \"done\" when finished: ");            String state = input.next();        if(hMap.get(state) != "done")                System.out.println("The capital is "+ hMap.get(state));    }
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

有几个错误:


1)在你的 for 循环中,更改i < x.length;为i < x[0].length;,否则你只运行了 2 次循环。


2)不要使用比较字符串!=。改为使用equals()。有关更多详细信息,请参阅此内容。


3)您没有循环重复要求用户输入。将您的代码更改main()为:


Scanner input = new Scanner(System.in);

HashMap<String, String> hMap = getInfo();

String state = "";

do {

    System.out.print("Enter a state, or \"done\" when finished: ");

    state = input.next();

    System.out.println("The capital is " + hMap.get(state));

} while (!state.equals("done")); 

4)使用接口,而不是类。所以改变


HashMap<String, String> hMap = getInfo();


Map<String, String> hMap = getInfo();

并更新方法签名以返回Map<String, String>。


5)从Java 9开始,你可以像这样直接创建一个地图:


Map<String, String> m = Map.of(

        "Alabama", "Montgomery",

        "Alaska", "Juneau",

        "Arizona", "Phoenix"

        //and so on...

);


查看完整回答
反对 回复 2022-07-20
  • 1 回答
  • 0 关注
  • 118 浏览

添加回答

举报

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