2014-09-03 23 views
0

我试着去创造一个classthat将存储人的名字和年龄表,并从控制台(例如鲍勃·19)读人,年龄和添加到HashMap中。在名单,年龄对之后,名字将被输入而没有年龄(例如鲍勃),并且用户将终止他们的输入(ctrl-z)。打印最后输入的人的年龄,或者如果没有为他们输入年龄,则打印“未知”。所以例如,如果我输入“玛丽12,鲍勃10,琼20,鲍勃”它应该返回10.JAVA:哈希映射扫描仪输入查找

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Scanner; 

public class Hashmap { 
    public static void main(final String[] args) { 
     HashMap<String, Integer> names = new HashMap<String, Integer>(); 
     ArrayList<String> nameArray = new ArrayList<String>(); 
     Scanner in = new Scanner(System.in); 
     while (in.hasNext()) { 
      String name = in.next(); 
      nameArray.add(name); 
      Integer age = in.nextInt(); 
      names.put(name, age); 
     } 
     Integer value; 
     int x = nameArray.size(); 
     value = names.get(x); 
     System.out.println("the age is:" + value); 

    } 
} 

感谢您的帮助。我是一名Java初学者,非常感谢这一切

回答

0

将名称变量声明移出while,并使用上一次输入的name获取age。在这里你去:

String name 
    while (in.hasNext()) { 
     name = in.next(); 
     nameArray.add(name); 
     Integer age = in.nextInt(); 
     names.put(name, age); 
    } 
    Integer value; 
    value = names.get(name); 
    System.out.println("the age is:" + value); 
+0

感谢您的响应,但这种解决方案将只输出我给了hashmap最后一个完整的输入。例如,如果我进入(jon 12,mary 13,jon),我想让它查看最后一个输入“jon”并在hashmap中查找返回12。 – seriallchiller 2014-09-03 11:19:29