2013-04-27 4 views
0

HashMap이 설정되어 있으며 스캐너를 사용하여 사용자로부터 문자열 입력을받습니다. 사용자 입력 문자열을 가져 와서 HashMap에서 나타내는 값을 추가하여 전체 메시지의 너비를 계산하고 싶습니다.해시 맵의 키 값을 통해 문자열을 반복하여 합계를 얻으십시오.

예를 들어, "test"를 입력한다고 가정 해 보겠습니다. 해시 맵에서 t의 값은의 값이 3, E의 값이 3, 2, 및 t의 값은 모두 합계 값은 그래서 당신은 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 
으로 끝낼 또한 2입니다

모든 키의 값은 i의 값과 관련이 있으므로 i * n으로 설정된 값이있는 것입니다.

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

을하지만 단순히 키의 값이 'A'로 설정되어있는 것을 저에게 말한다 :

나는 시도했다. 해시 맵을 통해 문자열의 각 문자를 실행하고 값을 얻은 다음 각 값을 함께 추가해야합니다. 그런 다음 합계를 구하십시오. 한 번에 하나씩 문자열의 각 문자를 반복하는 데 for 루프가 필요하다는 것을 알고 있습니다. 분명히, 나는 코드에서 중요한 부분을 놓치고있다.

또한 해시 맵에 a가 몇 개인 지, b가 몇 개인 지 등을 직접 설정할 수 있습니까? 글자를 추가/제거 할 수있는 유연한 arraylist를 설정했지만, 해시 맵에서 할 수 있다면 쉽게 작업 할 수 있습니다.

감사합니다.

+0

귀하의 질문은 합계에 대한 이야기를 시작하고 계산 방법에 대해 묻지 않습니다 (명확한 방법은 아닙니다). 계산을 위해 하나를 계산하고 합계를 계산하는 데 사용하는지도가 필요할 것입니다. –

+0

글쎄, 문자열 입력에서 문자의 수를 얻을 수 있다면 문자열의 각 문자의 키 값을 단순히 추가하여 합계를 계산할 수 있습니다. 그게 꽤 많이 어디에 내가 현재 코딩 부분을 알아 내려고 노력하고있어 – harshm0de

+0

그것은 당신의 질문이 무엇인지 여기 분명하지 않습니다. 게시물을 수정하고 분명한 질문을하면 취소됩니다. – RBarryYoung

답변

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

스칼라와 같은 기능적 언어를 반복적으로 사용하지 않아도됩니다. 또는 몇 가지 폴딩 기능을 추가하십시오. link

+0

그 작품, 감사합니다 Logged – harshm0de

관련 문제