[명품 Java Programming] 6장 Open Challenge
2021. 12. 6. 20:13ㆍJava/명품 Java
Open Challenge - 영문자 히스토그램 만들기
텍스트를 입력받아 영문자 히스토그램 만들기. 대문자와 소문자는 모두 같은 것으로 간주하고 세미콜론만 입력되는 라인을 끝으로 한다.
**해당 교재 1~6장에서 배운 내용들로만 소스코드 작성했습니다.**
소스코드
import java.util.*;
public class HistogramEx {
public static void main(String[] args) {
//처음지정
StringBuffer sb = new StringBuffer(); //텍스트 저장할 StringBuffer 지정
String[] alpha = new String[26]; //A~Z까지 배열에 저장
int[] count = new int[26]; // A~Z 개수 저장할 배열 지정
char c = 'A'; //처음 알파벳 지정
//사용자 텍스트 입력
System.out.println("영문 텍스트를 입력하고 세미콜론을 입력하세요.");
Scanner scanner = new Scanner(System.in); //텍스트 입력
//입력한 텍스트 StringBuffer에 저장
for(;;) {
String s = scanner.nextLine();
if(s.equals(";")) //;만나면 저장 끝내기
break;
else {
sb.append(s); //계속 저장
}
}
//alpha 배열에 A~Z저장
for(int i = 0; i < alpha.length; i++) {
alpha[i] = Character.toString(c); // 알파벳 String 형태로 저장(alpha가 String이므로)
c++; //다음 알파벳으로 넘어감
}
//소문자 알파벳 대문자로 변경+개수 세기
for(int i=0; i<sb.length(); i++) {
String text = (Character.toString(sb.charAt(i))).toUpperCase(); //입력된 문자를 대문자로 text에 저장
sb.replace(i, i+1, text); //소문자를 대문자로 변경
for(int j = 0; j<alpha.length; j++) {
if(text.equals(alpha[j])) {
count[j]++; //A~Z 중 해당되는 경우의 count 수를 높임
}
}
}
//히스토그램 출력
System.out.println("히스토그램을 그립니다.");
for(int i = 0; i<alpha.length; i++) {
System.out.print(alpha[i]);
for(int j = 0; j<count[i]; j++) { //count 수만큼 출력하기 위해 반복
System.out.print("ㅡ");
}
System.out.println("");
}
}
}
결과

혹시 틀린 부분 있으면 댓글로 알려주세요~~~!
'Java > 명품 Java' 카테고리의 다른 글
[명품 Java Programming] 5장 Open Challenge (0) | 2022.01.07 |
---|---|
[명품 Java Programming] 4장 실습문제 (0) | 2022.01.06 |
[명품 Java Programming] 4장 Open challenge (0) | 2022.01.05 |
[명품 Java Programming] 7장 Open Challenge (0) | 2021.12.07 |