将数据从双数组传输到 HashMap

创建一个双数组(一行用于州,一行用于国会大厦),我试图在 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));



    }


潇湘沐
浏览 119回答 1
1回答

杨魅力

有几个错误: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 {&nbsp; &nbsp; System.out.print("Enter a state, or \"done\" when finished: ");&nbsp; &nbsp; state = input.next();&nbsp; &nbsp; System.out.println("The capital is " + hMap.get(state));} while (!state.equals("done"));&nbsp;4)使用接口,而不是类。所以改变HashMap<String, String> hMap = getInfo();至Map<String, String> hMap = getInfo();并更新方法签名以返回Map<String, String>。5)从Java 9开始,你可以像这样直接创建一个地图:Map<String, String> m = Map.of(&nbsp; &nbsp; &nbsp; &nbsp; "Alabama", "Montgomery",&nbsp; &nbsp; &nbsp; &nbsp; "Alaska", "Juneau",&nbsp; &nbsp; &nbsp; &nbsp; "Arizona", "Phoenix"&nbsp; &nbsp; &nbsp; &nbsp; //and so on...);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java