插入Map后不能执行地图内容

时间:2016-02-24 01:26:13

标签: java

我已将控制台输入插入到地图中,但为什么不按照代码打印它。

import java.util.*;

public class One {

public static void main(String[] args) {        

    Scanner s = new Scanner(System.in);
    Map<Integer, Integer> map = new HashMap<Integer, Integer>();

    while(s.hasNextLine()){
        String[] split = s.next().toString().split("-");            
        map.put(Integer.parseInt(split[0]), Integer.parseInt(split[1]));                    
    }   

    for(Map.Entry<Integer,Integer> e:map.entrySet()){
        System.out.println(e.getKey()+"-"+e.getValue());
    }       
}

}

请告诉我原因。

1 个答案:

答案 0 :(得分:0)

现在看来你已经纳入了评论中建议的更改。现在您的逻辑问题是您不断接受用户的输入并将其添加到Hashmap。没有办法摆脱那个循环。当您陷入while循环时,您永远不会看到Map中存储的数据。修改如下所示的代码,以便有机会摆脱循环。

    Scanner s = new Scanner(System.in);
    Map<Integer, Integer> map = new HashMap<>();

    while(s.hasNextLine()){
        String input = s.next();
        if (!input.equals("quit")) {
            String[] split = input.toString().split("-");
            map.put(Integer.parseInt(split[0]), Integer.parseInt(split[1]));
        } else {
            break;
        }
    }

    for(Map.Entry<Integer,Integer> e:map.entrySet()){
        System.out.println(e.getKey()+"-"+e.getValue());
    }

每当收到格式错误的输入时,您也可以添加更好的错误处理。