백준 11654 JAVA

smkim·2021년 10월 20일
0


출처:백준

사고과정 : 사용자로부터 입력값을 받고 그 값을 아스키 코드로 변환해서 리턴을 해줘야 할 것 같은데 아스키코드로 변환하는 방법을 모르겠다..

수정 전 코드

import java.util.Scanner;

public class b11654 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(); // Scanner로 사용자로부터 알파벳 소문자,대문자,숫자 0-9 중 입력받기 
		String s = sc.next(); // 사용자가 입력한 값 string형으로 s 변수에 저장하기 
		
		// 아스키로 변환 
		s.ascii();
		
		
	}

}

수정 후 코드

import java.util.Scanner;

public class b11654 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in); // Scanner로 사용자로부터 알파벳 소문자,대문자,숫자 0-9 중 입력받기 
		int s = sc.next().charAt(0); // String에서 char로. 문자열을 잘라 문자로 변환한다. 
		                             // int 타입 변수에 저장함으로써 문자에 대응되는 값. 즉 아스키 코드값을 저장한다. 
		
		System.out.println(s);
		
		
	}

}

1.Scanner에서 System.in은 왜 또 안쓴거지..
2.그리고 string형으로 sc.next()를 하는 건 맞았지만 우리가 원하는 것은 아스키 코드가 반환되는 '정수값'이므로 int형으로 바꿔주어야 한다.
3.charAt()은 문자열을 잘라 문자로 변환하는데
sc.next().charAt(0)의 의미는 sc.next() 문자열에서 0번째에 있는 문자를 가리키는 것이다. 그리고 그것을 int형으로 바꿔 s 변수에 넣는 것이다.

참고 ) Java는 String을 처리할 때 내부(메모리 상)에서는 UTF-16 BE 인코딩으로 문자열을 저장하고, 송수신에서는 직렬화가 필요한 경우 변형된 UTF-8을 사용하여 문자열을 입/출력할때만 사용자가 지정한 인코딩 값 또는 운영체제의 기본 인코딩 값으로 문자열을 인코딩한다.

만약에 Ecplise의 File 인코딩이 UTF-8이라면
입력(UTF-8) > 송수신(변형된 UTF-8) > 자바 메모리(UTF-16) > 송수신(변형된 UTF-8) > 출력(UTF-8)

출처 : https://st-lab.tistory.com/41?category=830901

profile
컴퓨터공학과 학생 brandy 입니다. 개발+기획에 관심이 있지만, 개발 실력이 뛰어나진 않지만 성장하고자 하기 위해 벨로그를 작성합니다.

0개의 댓글