2011-12-29 85 views
1

我實現了兩個哈希表,如下所示。從控制檯讀取整數和字符串

HashMap<Integer,String> streetno=new HashMap<Integer,String>(); 
    streetno.put(1, "Sachin Tendulkar"); 
    streetno.put(2, "Dravid"); 
    streetno.put(3,"Sehwag"); 
    streetno.put(4,"Laxman"); 
    streetno.put(5,"Kohli"); 


HashMap<String,Integer> streetname=new HashMap<String,Integer>(); 
    streetname.put("Sachin Tendulkar",1); 
    streetname.put("Dravid",2); 
    streetname.put("Sehwag",3); 
    streetname.put("Laxman",4); 
    streetname.put("Kohli",5); 
    Iterator itr=streetno.keySet().iterator(); 

現在我要求用戶輸入。如果他輸入整數,我想從第一個哈希表中檢索特定值,如果用戶輸入字符串,我想從第二個哈希表讀取特定的整數。

我的問題是「我怎樣才能讀取用戶輸入的?」因爲我不知道用戶是輸入整數還是字符串? 而且我也想知道我可以檢索特定值使用Iterator取決於關鍵?

回答

0

在其他的答案中提到,您可以讀取輸入。我只是以這種方式嘗試了主要邏輯。如果結合兩張地圖,你可以試試這種方式。

  String input = "Laxman";    
      HashMap<String, String> street = new HashMap<String, String>(); 
      street.put("1", "Sachin Tendulkar"); 
      street.put("2", "Dravid"); 
      street.put("3", "Sehwag"); 
      street.put("4", "Laxman");   

      for (Map.Entry<String, String> entry : street.entrySet()) { 
       System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); 
       if (input.equals(entry.getKey())) { 
        System.out.println(entry.getValue()); 
        break; 
       } else if (input.equals(entry.getValue())) { 
        System.out.println(entry.getKey()); 
        break; 
       }    
      }     
0

我相信你將需要使用Integer.parseInt找出輸入是否與整數或沒有。

不幸的是,不是一個真正的「的TryParse」或Java中類似的東西,所以你必須只捕獲異常。你可能使用正則表達式來檢查它是否是數字,但這可能比它的價值更麻煩。

至於從控制檯讀取,我會用:

Scanner console = new Scanner(System.in);

0

讀輸入的字符串;如果它可以被解析爲Integer,則使用streetno,否則使用streetname

1

我怎樣才能讀取用戶輸入?

喜歡的東西

String line = scanner.nextLine(); 

因爲我不知道用戶是否進入整數或字符串?

嘗試將其轉換爲整數

try { 
    int num = Integer.parseInt(line); 
    // lookup by number 

} catch(NumberFormatException ignored) { 
    // lookup by string 

} 

可以使用迭代器根據密鑰我檢索特定的值?

Iterator用於迭代,Map用於按鍵查找。

0

可以使用Scanner類來檢索用戶輸入。它有幾個有用的方法,如nextInt() or nextLine(),可用於確定用戶是否輸入了整數或字符串。

您也可以讓用戶「說,」他們是預先輸入的內容 - int或字符串。但這不是非常用戶友好的。

要提供密鑰,要從HashMap獲得值,請使用get(key)方法。

1

首先,您需要閱讀標準輸入。首先把它作爲一個String來處理,以簡化。

Scanner scanner=new Scanner(System.in); 
    String userInput=scanner.nextLine(); 

然後,嘗試將字符串轉換爲整數。如果用戶輸入一個號碼,你會得到一個鍵第一張地圖,否則,您可以asume它是第二個字符串鍵:

String sName; 
    Integer iNumber; 
    try { 
     iNumber=Integer.parseInt(userInput); 
     //user intruduced a number, so get the streename 
     sName=streetno.get(iNumber); 

    } catch (NumberFormatException e) { 
     //user introduced a not-numeric String, so get the streetnumber 
     sName=userInput; 
     iNumber=streetname.get(sName); 
    } 

你並不需要遍歷鍵集,因爲Map.get()方法會返回相應的值。

最後,不要忘記釋放掃描儀(最好是在finally塊):

scanner.close();