Java 문자와 숫자 비교 | 캐스팅 | 대문자 소문자 | 문자 빈도 수
2024. 11. 21. 14:02ㆍ정보처리,전산/JAVA
반응형
- char x = 65;
- Java에서 65는 ASCII 코드 값으로, 문자 'A'를 의미한다.
따라서 변수 x는 문자 'A'로 초기화된다.
- Java에서 65는 ASCII 코드 값으로, 문자 'A'를 의미한다.
- System.out.println('Z' - 'A');
-
- 'Z'의 ASCII 값: 90
- 'A'의 ASCII 값: 65
- 두 값의 차: 90 - 65 = 25
- 출력 결과: 25
-
- System.out.println(x);
- x의 값은 문자 'A'이다.
- 출력 결과: A
- System.out.println((int)x);
- x를 (int)로 캐스팅하면 'A'의 ASCII 값인 65가 출력된다.
- 출력 결과: 65
- System.out.println((char)65);
- 숫자 65를 (char)로 캐스팅하면 ASCII 값 65에 해당하는 문자 'A'가 출력된다.
- 출력 결과: A
- System.out.println(x + 25);
-
- x는 'A'이고, ASCII 값은 65이다.
- 여기에 25를 더하면 65 + 25 = 90이 된다.
- 결과는 정수로 출력된다.
- 출력 결과: 90
-
- System.out.println((char)(x + 25));
-
- x('A', ASCII 값 65)에 25를 더하면 90이 된다.
- 이 값을 (char)로 캐스팅하면 ASCII 값 90에 해당하는 문자 'Z'가 출력된다.
- 출력 결과: Z
-
char x = 65; // 'A'
System.out.println('Z' - 'A'); // 25
System.out.println(x); // A
System.out.println((int)x); // 65
System.out.println((char)65); // A
System.out.println(x + 25); // 90
System.out.println((char)(x + 25)); // Z
요약
- ASCII 값과 문자:
Java에서 문자는 내부적으로 숫자(ASCII 값)로 처리된다. - 캐스팅 활용:
(char)와 (int)를 사용하여 문자와 숫자를 자유롭게 변환할 수 있다. - 연산 결과:
문자와 숫자 간 연산에서 데이터 타입에 따라 결과가 다르게 표현된다.
public class Main {
public static void main(String[] args) {
String str = "HelloWorld"; // 입력 문자열
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i); // 현재 문자
// 대문자 -> 소문자로 변환
if ('A' <= ch && ch <= 'Z') {
int dist = ch - 'A'; // A로부터의 거리 계산
char lowerAscii = (char) ('a' + dist); // 소문자 ASCII 값 생성
System.out.print(lowerAscii);
}
// 소문자 -> 대문자로 변환
else if ('a' <= ch && ch <= 'z') {
int dist = ch - 'a'; // a로부터의 거리 계산
char upperAscii = (char) ('A' + dist); // 대문자 ASCII 값 생성
System.out.print(upperAscii);
}
// 알파벳이 아닌 경우 그대로 출력
else {
System.out.print(ch);
}
}
}
}
코드 설명
- char ch = str.charAt(i);
- 현재 위치의 문자를 가져온다.
- 대문자 → 소문자 변환 (if ('A' <= ch && ch <= 'Z'))
- 현재 문자가 대문자인 경우, ASCII 값의 거리(dist)를 계산하여 소문자로 변환한다.
- 소문자 → 대문자 변환 (else if ('a' <= ch && ch <= 'z'))
- 현재 문자가 소문자인 경우, ASCII 값의 거리(dist)를 계산하여 대문자로 변환한다.
- 알파벳이 아닌 경우 처리
- 문자가 알파벳이 아닌 경우 그대로 출력한다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 입력을 받기 위한 Scanner 객체 생성
System.out.print("Enter a string: ");
String str = sc.next(); // 문자열 입력 받기
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i); // 문자열에서 각 문자를 가져옴
// 대문자인 경우 소문자로 변환
if ('A' <= ch && ch <= 'Z') {
System.out.print((char) ('a' + (ch - 'A')));
}
// 소문자인 경우 대문자로 변환
else if ('a' <= ch && ch <= 'z') {
System.out.print((char) ('A' + (ch - 'a')));
}
// 알파벳이 아닌 문자는 그대로 출력
else {
System.out.print(ch);
}
}
sc.close(); // Scanner 객체 닫기
}
}
■ 대소문자를 구분하여 알파벳의 빈도수를 세고, 가장 많이 등장한 알파벳을 출력하는 프로그램
import java.util.Scanner;
public class Main {
// 알파벳 빈도수 세는 메소드
public static int[] getAlphabetCount(String str) {
int[] count = new int[26]; // 알파벳 수에 맞는 배열
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if ('A' <= ch && ch <= 'Z') {
count[ch - 'A']++; // 대문자일 경우
} else if ('a' <= ch && ch <= 'z') {
count[ch - 'a']++; // 소문자일 경우
}
}
return count;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next(); // 입력 문자열
int[] count = getAlphabetCount(str); // 알파벳 빈도수 배열 가져오기
int maxCount = -1; // 가장 많이 나온 알파벳의 개수
char maxAlphabet = '?'; // 가장 많이 나온 알파벳
// 알파벳의 빈도수 비교
for (int i = 0; i < 26; i++) {
if (count[i] > maxCount) { // 더 많은 개수가 있을 때
maxCount = count[i];
maxAlphabet = (char) ('A' + i); // 대문자 알파벳으로 변환
} else if (count[i] == maxCount) { // 개수가 동일한 경우
maxAlphabet = '?'; // 다르면 '?'를 출력
}
}
System.out.println(maxAlphabet); // 결과 출력
sc.close();
}
}
count[ch - 'A']++; // 대문자일 경우
- 대문자 알파벳일 경우, 해당 알파벳에 해당하는 인덱스를 계산하여 count 배열에서 그 인덱스의 값을 1 증가시킨다. , 'A'는 인덱스 0, 'B'는 인덱스 1이 된다.
maxCount 변수를 -1로 초기화하여 가장 많이 나온 알파벳의 빈도수를 저장할 변수로, 시작값을 -1로 설정하여 비교할 수 있도록 한다.
maxAlphabet 변수를 '?'로 초기화하 가장 많이 나온 알파벳을 저장할 변수로, 기본값을 '?'로 설정하여 동일한 빈도의 알파벳이 있을 때 '?'을 출력하도록 한다.
만약 count[i](i번째 알파벳의 빈도)가 maxCount보다 크다면, 즉 현재 알파벳이 이전의 가장 많이 나온 알파벳보다 더 많이 등장한 경우를 확인한다.
만약 count[i]가 maxCount와 같다면, 즉 동일한 빈도를 가진 알파벳이 여러 개 있는 경우를 확인한다.
- 동일한 빈도를 가진 알파벳이 있으면, maxAlphabet을 '?'로 설정하여 가장 많이 나온 알파벳이 여러 개 있다는 것을 표시한다.
반응형
'정보처리,전산 > JAVA' 카테고리의 다른 글
compiler subsystem (0) | 2024.12.21 |
---|---|
상속을 활용한 생성자 호출 (0) | 2024.11.28 |
HTTP GET 및 POST 요청을 처리하는 방법 (0) | 2024.11.15 |
final 키워드 (1) | 2024.09.17 |
환경 변수 설정한 JAVA 버전 확인이 안될 때 (0) | 2024.08.08 |