2013-04-27 61 views
0

我有一個HashMap設置,並且我從用戶使用Scanner獲取字符串輸入。我想獲取用戶輸入字符串,然後通過添加它們在Hashmap中表示的值來計算整個消息的寬度。通過hashmap的鍵值逐字符串獲得總和

那麼比如說,讓我們說你進入「測試」。噸的在HashMap中的值是2,e的值是3,s的值是3,和t的值也爲2全部加起來的值,以便你最終10.

System.out.print("How much width do you want i to have? "); 
int i = input.nextInt(); 

System.out.println("\nEnter the string input:"); 
Scanner scan = new Scanner(System.in); 
String user_input = scan.nextLine(); 

Map<String,Integer> map = new HashMap<String,Integer>(); 

      map.put("a", i*2); 
      map.put("b", i*2); 
      map.put("c", i*2); 
      map.put("d", i*2); 
      map.put("e", i*3); 
      map.put("f", i*2); 
      map.put("g", i*2); 
      map.put("h", i*2); 
      map.put("i", i*1); 
...down to z 

所以你知道,所有的鍵的值都是相對於我的值,所以這就是爲什麼我的值設置爲i * n。

我想:

int count = map.containsKey("a") ? map.get("a") : 0; 
map.put("a", count + 1); 

但簡單地告訴我什麼鍵的值「a」設置爲。我需要通過hashmap運行每個字符串,獲取值,並將每個值一起添加。然後得到總和。我知道這將需要一個for循環遍歷字符串中的每個字母。顯然,我錯過了代碼中的一些重要部分。

此外,是否有可能直接設置爲散列圖a有多少存在,有多少b存在等等?我爲此設置了一個靈活的數組列​​表,可以讓我添加/刪除字母,但如果我可以使用hashmap來完成,它會使事情變得更簡單。

謝謝!

+0

您的問題開始討論總和,並結束詢問有關計數(以不太清楚的方式)。您可能需要映射 - 一個用於計數並用於計算總和。 – 2013-04-27 21:12:57

+0

好吧,如果我可以得到字符串輸入中的字符數,我可以通過簡單地添加字符串中每個字符的鍵值來計算總和。這幾乎是我目前試圖找出編碼部分 – harshm0de 2013-04-27 21:30:30

+0

現在還不清楚你的問題在這裏。請修改您的帖子並詢問一個明確的問題,否則它將被關閉。 – RBarryYoung 2013-04-27 22:34:50

回答

1
int sum = 0; 
for(int i = 0; i < user_input.length(); i++) { 
    sum += map.get(user_input.charAt(i)); 
} 

你可以避免使用像Scala這樣的函數式語言的迭代。 或添加一些摺疊功能:link

+0

工作,謝謝 – harshm0de 2013-04-28 01:44:47