2015-04-05 130 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"那裏。