안 씀/java-예제&실습

[명품자바] 6장 오픈챌린지

unhyepnhj 2024. 6. 19. 13:52

영문자 히스토그램 만들기

 

텍스트를 키보드로 입력

알파벳이 아닌 문자는 제외하고 영문자 히스토그램으로

대문자와 소문자는 모두 같은 것으로 취급

세미콜론(;)만 있는 라인을 만나면 입력의 끝으로 간주

 

키보드로부터 텍스트를 입력받아 하나의 문자열로 리턴하는 코드는 다음 코드를 이용하라고 합니다

String readString() {
		StringBuffer sb=new StringBuffer();
		Scanner scanner=new Scanner(System.in);
		while(true) {
			String line=scanner.nextLine();
			if(line.equals(";")) 
				break;		//';'만 있는 라인이면 입력 종료
			sb.append(line);	//읽은 문자열을 스트링버퍼에 추가
		}
		return sb.toString();	//스트링버퍼의 문자열을 스트링으로 리턴
}

 

Histogram 클래스(만들라는 말은 없었는데 그냥 만들었습니다)

import java.util.*;

public class Histogram {
	
	public String readString() {
		StringBuffer sb=new StringBuffer();
		Scanner scanner=new Scanner(System.in);
		while(true) {
			String line=scanner.nextLine();
			if(line.equals(";")) 
				break;		//';'만 있는 라인이면 입력 종료
			sb.append(line);	//읽은 문자열을 스트링버퍼에 추가
		}
		return sb.toString().toUpperCase();	//스트링버퍼의 문자열을 대문자 스트링으로 리턴
	}
	
	public void countAlphabet(String str) {
		
		for(char c='A'; c<='Z'; c++) {
			int count=0;
			for(int i=0; i<str.length(); i++) {
				if(str.charAt(i)==c) count++;
			}
			System.out.println(c+"-".repeat(count));
		}
	}
}

 

Main

public class Main {

	public static void main(String[] args) {
		System.out.println("영문 텍스트를 입력하고 세미콜론을 입력하세요.");
		
		Histogram h=new Histogram();
		String str=h.readString();
		
		System.out.println();
		System.out.println("히스토그램을 그립니다.");
		h.countAlphabet(str);
	}
}

 

>>실행

아델의 hello 입니다

좋은 노래죠