2014-11-01 2 views
1

나는 현재 사용자의 의지 입력 문자열 다음 프로그램이 출력과 같은 소문자가 발생하는 프로그램 쓰기를 시도하고있다 :문자열의 소문자를 계산하고 히스토그램의 형태로 해당 항목을 인쇄 하시겠습니까?

"Hello world! The quick brown fox jumps over the fence." 

a: 
b:* 
c:** 
d:* 
e:***** 
f:** 
g: 
h:*** 
... so on until z. 

난 그냥이 글을 쓰는 대해 이동하는 방법을 몰라합니다. 둘러 보았지만 아무도 배열을 사용하지 않습니다. 나는 당신이 알파벳을위한 배열을 가지고 있다고 생각하고 문자열의 각 요소를 취하여 알파벳 문자와 대응시키는 반복문을 가지고 있다고 생각했습니다. 그리고 알파벳 문자가 궁극적으로 히스토그램을 표시하는 카운터에 추가됩니다.

잘 모르겠습니다.

감사합니다.

편집 : 여기까지 내가 지금까지 가지고 있습니다. 별로 아니에요. 나는 아직도해야할 일을 정말로 이해하지 못합니다. 그러나 그것은 뭔가입니다.

import java.util.Scanner; 

public class CountingChars { 


    public static void main(String[] args) { 
    System.out.println("Enter the text you would like to count the characters of. Please end with  a blank line."); 
    Scanner sc = new Scanner(System.in); 
    String userInput = sc.nextLine(); 
    String alphabet = "abcdefghijklmnopqrstuvwxyz"; 

    int[] amount = new int[alphabet.length()]; 

    //for (int i = 0; i < userInput.length();i++){ 
    //} 
    char occurrence; 
    int count = 0; 

    while(userInput.length()>0){ 
     occurrence = userInput.charAt(0); 
     int i = 0; 

     while(i < userInput.length() && userInput.charAt(i) == occurrence){ 
     count++; 
     } 
    } 


    } 



} 
+2

올바른 길을 가고 있습니다. 유니 코드에서 문자의 위치를 ​​사용하는 경우 (문자에만 초점을 맞추고 싶다고 가정) 배열을 사용하여 배열을 수행 할 수 있지만 Map으로 이러한 막대 그래프를 수행 할 수도 있습니다. 불행히도 나는 코드를 게시하지 않을 것이지만, 당신이 당신의 실수를 설명하려고 시도 할 수있는 당신의 시도를 게시 할 것입니다. – Pshemo

+0

지도를 사용하거나 멀티 세트를 사용 하시겠습니까? – slnowak

답변

0

염두에 두 가지 기본적인 방법.

처음에는 저장된 정수 (낮은 알파벳 문자)가있는 고정 길이 배열을 사용합니다. 여기서 'a'는 인덱스 0에 있습니다. 그런 다음 특정 인덱스를 업데이트하는 주어진 chararray를 반복합니다 (인덱스는 'selectedChar'- 'a', 인덱스 위치를 알려줍니다). 그런 다음 목록을 통해 단순히 별표의 인쇄 번호를 반복합니다.

두 번째 방법은 HashMap을 사용하는 것입니다. HashMap에서는 각 문자마다 값을 저장하고 그에 따라 문자 수를 계산하여 그에 따라지도의 값을 업데이트 한 다음 간단히지도를 통해 출력합니다 (이제는 생각하고 있습니다). , SortedMap이 더 좋습니다).

-1
public static void printAlphabetHistogram(String input) { 
     int amount[] = new int[25]; 
     for(char c : input.toCharArray()) { 
      if(Character.isAlphabetic(c)) { 
       c = Character.toLowerCase(c); 
       amount[c - 'a'] += 1; 
      } 
     } 
     for(int i = 0; i < amount.length; i++) { 
      System.out.printf("%s:", (char)('a' + i)); 
      for(int j = 0; j < amount[i]; j++) { 
       System.out.print("*"); 
      } 
      System.out.println(); 
     } 
} 
+1

그리고 그것은 숙제가 요즘 어떻게 해결되는지입니다. 물고기를주지 말고 물고기를 가르쳐주십시오. – Pshemo

+0

그가 이것을 숙제로 사용하면 계속 진행하십시오. 그 사람은 수업을 듣지 못할 것이고 돈은 낭비 될 것입니다. 그 사람이 내가 한 일을보기로 결정하면, 그 일을 배울 수도 있습니다. – engineercoding

관련 문제