我已将控制台输入插入到地图中,但为什么不按照代码打印它。
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());
}
}
}
请告诉我原因。
答案 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());
}
每当收到格式错误的输入时,您也可以添加更好的错误处理。