2015-04-05 124 views
1

这就是我需要的和我得到的。 将数字3到10添加到散列表 提示用户输入字符串,并显示相应的数字。 使用循环和单个println语句,显示表中的所有值(字符串和整数)。 我的主要问题是我不确定如何处理while循环。我只用了一次while循环。Java哈希表,带while循环

import java.util.*; 
class HTDemo { 
    public static void main(String args[]) { 
     Hashtable<String, Integer> numbers = new 
       Hashtable<String, Integer>(); 

     numbers.put("one", new Integer(1)); 
     numbers.put("two", new Integer(2)); 
     numbers.put("three", new Integer(3)); 
     numbers.put("four", new Integer(4)); 
     numbers.put("five", new Integer(5)); 
     numbers.put("six", new Integer(6)); 
     numbers.put("seven", new Integer(7)); 
     numbers.put("eight", new Integer(8)); 
     numbers.put("nine", new Integer(9)); 
     numbers.put("ten", new Integer(10)); 

     String number; 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter a number in word form: (Example: Five, Six,  Seven): "); 
     number = input.next(); 
     while() { 
      System.out.println("You entered: " + number + "\nwhich is the interger: " + numbers); 
     } 
    } 
} 

这是我得到的,这是不对的说明:

输入文字形式的号码:(例如:五,六,七):
您进入:五个
这是一个整数:{three = 3,six = 6,ten = 10,seven = 7,nine = 9,one = 1,five = 5,four = 4,two = 2,eight = 8}

+0

更好地使用'Map numbers = new HashMap <>()'。你不需要显式创建'Integer'对象,Java自动装箱会为你做:'numbers.put(“one”,1)' – 2015-04-05 20:12:47

回答

1
Scanner input = new Scanner(System.in); 
System.out.println("Enter a number in word form: (Example: Five, Six, Seven): "); 

// wait for input 
String number = input.next(); 

// display value, using Map#get method 
System.out.println(String.format("You've entered %s which is integer %s", number, numbers.get(number))); 

// iterate over map entries using for (not while) loop 
for (Map.Entry<String, Integer> e : numbers.entrySet()) { 
    System.out.println(String.format("Number:%s, integer:%s", e.getKey(), e.getValue())); 
} 

顺便说一句,你不应该忘记字符串是区分大小写的,我。即numbers.get("Seven")将返回null,因为您已将"seven",而不是"Seven"那里。