String을 입력받아 사용된 알파벳수 출력
Tip.
정수(int) 숫자를 문자(char)로 바꾸려면 타입캐스팅을 하면됨. ex> (char)숫자
알파벳 대문자 A~Z : (char)65~90 (26개)
알파벳 소문자 a~z : (char)97~122 (26개)
위와 같이 알파벳 대문자와 소문자 사이에는 6개(char)92~96의 특수문자가 있음.
91:[ 92:\ 93:] 94:^ 95:_ 96:`
따라서 for문을 돌려서 알파벳 각 문자를 비교하기위해 대문자26자 + 소문자 26자 = 52자 기준으로 돌리되
중간에 특수문자 6개를 띄어넘어 비교하게 끔 아래와 같은 로직을 이용하면 됨
for(int i=0; i < 52; i++){
if(i < 26){
(char)(i + 65) //A~Z
}else{
(char)(i + 71) //a~z
71을 더한이유는 소문자a가 숫자로는 97 부터이므로 대문자0~25까지 처리후 다음 i 숫자인 26을 더해서 97이 되는 71을 더하면 됨!!!
주의! (char)i + 71과 (char)(i + 71) 은 다름!!!
ex> System.out.println((char)(0+65)); 는 A
System.out.println((char)0+65); 는 66
}
}
WordCount.java
public class WordCount {
/** * String을 입력받아 사용된 알파벳수 출력 * */ public WordCount(){ } public void counting(String s){ int slength = s.length(); //입력받는 문자열 길이 char []alphabet = new char[52]; //비교할 알파벳을 담을 배열 int []cnt = new int[52]; for(int k=0; k < 52; k++){ if(k < 26){ //대문자 (char)65~91 alphabet[k] = (char)(k + 65); }else{ //소문자 (char)97~123 //97부터니깐 26 + 71 = 97부터 임 alphabet[k] = (char)(k + 71); } } for(int i = 0; i < 52; i++){ for(int j=0; j < slength; j++){ if(s.charAt(j) == alphabet[i] ){ ++cnt[i]; } } } //출력 for(int m=0; m < 52; m++){ System.out.println("alphabet["+m+"]"+alphabet[m]+":"+ cnt[m]); } } public static void main(String[] args) {
String str = "helloworld"; WordCount wc = new WordCount(); wc.counting(str); }
}
|
결과출력
alphabet[0]A:0 alphabet[1]B:0 alphabet[2]C:0 alphabet[3]D:0 alphabet[4]E:0 alphabet[5]F:0 alphabet[6]G:0 alphabet[7]H:0 alphabet[8]I:0 alphabet[9]J:0 alphabet[10]K:0 alphabet[11]L:0 alphabet[12]M:0 alphabet[13]N:0 alphabet[14]O:0 alphabet[15]P:0 alphabet[16]Q:0 alphabet[17]R:0 alphabet[18]S:0 alphabet[19]T:0 alphabet[20]U:0 alphabet[21]V:0 alphabet[22]W:0 alphabet[23]X:0 alphabet[24]Y:0 alphabet[25]Z:0 alphabet[26]a:0 alphabet[27]b:0 alphabet[28]c:0 alphabet[29]d:1 alphabet[30]e:1 alphabet[31]f:0 alphabet[32]g:0 alphabet[33]h:1 alphabet[34]i:0 alphabet[35]j:0 alphabet[36]k:0 alphabet[37]l:3 alphabet[38]m:0 alphabet[39]n:0 alphabet[40]o:2 alphabet[41]p:0 alphabet[42]q:0 alphabet[43]r:1 alphabet[44]s:0 alphabet[45]t:0 alphabet[46]u:0 alphabet[47]v:0 alphabet[48]w:1 alphabet[49]x:0 alphabet[50]y:0 alphabet[51]z:0 |
댓글