Ex) getStrToInt메서드는 String형 str을 매개변수로 받는다. str을 숫자로 변환한 결과를 반환하도록 strToInt를 완성하라. 예를 들어 str이 '1234'이면 1234를 반환하고 '-1234'이면 -1234를 반환한다. str은 부호(+, -) 와 숫자로만 구성됐고 잘못된 값이 입력되는 경우는 없다.
<hide/>
package javaStudy;
public class StrToInt {
public int getStrToInt(String str) {
int result = 0;
int sign = 1;
int index = 1;
char ch = str.charAt(0);
if(ch == '-'){
sign = -1;
}else if(ch == '+'){
sign = 1;
}else {
index = 0;
}
for(int i = index; i < str.length(); ++i ){
result = result * 10 + (str.charAt(i) - '0');
}
return sign * result;
}
public static void main(String[] args) {
StrToInt strToInt = new StrToInt();
System.out.println( strToInt.getStrToInt("-1234"));
System.out.println( strToInt.getStrToInt("+1234"));
System.out.println( strToInt.getStrToInt("1234"));
}
}
Note) 실행 결과
(1) 자바가 젯공하는 api를 사용하지 않고 직접 푸는 방법
- 리턴할 결괏값 result를 int형으로 선언한다.
- 부호를 가진 경우와 없는 경우로 나뉜므로 결과값을 리턴할 때 부호값을 정확히 해줘야 한다.
- 음수인 경우에는 결괏값은 -1을 곱하고 양수인 경우에는 + 1을 곱하면 된다.
- 그 값을 기억할 변수 sign을 선언한다.
- 다음에 문자열로 들어온 값을 정수로 바꾼다.
- 첫 문자가 부호 비트일 경우에는 숫자로 바꿔줄 필요가 없다.
- index라는 변수를 선언하고 부호가 있는 경우 해당하는 1값으로 초기화한다.
- 그라면 나중에 문자를 숫자로 바꿀 반복문을 수행할 때 부호를 가진 값은 index를 0으로 시작해서 문제를 해결한다.
- 먼저, 부호 유무에 따라 if문을 이용해 sign 값을 할당한다.
- chatAt(0): 첫 번째 문자를 얻어내는 메서드
-> 첫 문자가 -이면 sign = -1, +이면 sign = 1 을 넣는다.
-> 부호가 없으면 index = 0으로 할당한다.
-> 이렇게 하면 String을 int로 값 으로 바꿀 때 부호 있는 값은 두 번째 문자부터 바꿔주고
-> 부호 없는 값은 첫 문자부터 바꿀 수 있다.
- 그리고 다음, String값을 int값으로 바꿔줘야 한다.
- result = result * 10 + (str.charAt(i) - '0')
-> 1 + '1'을 출력하면 50이 출력된다. (아스키코드 '1'의 십진수 : 49 )
-> char형을 실제 저장 장소에 저장될 때 약속한 코드 값으로 저장되기 때문이다.
-> 따라서 얻어온 char값에 '0'을 빼줘야 원하는 값을 얻을 수 있다.
- 첫 번째 반복문은 실행하면 '1'이라는 char값을 얻을 수 있다.
- result = result * 10
-> 이 부분에서 처음 result값은 0이므로 이 문장을 실행하면 result에는 1이라는 정숫값이 들어간다.
-> 다음 반복문을 실행하면 result에는 1이 들어 있는 상태이므로 retult * 10을 해서 10이 얻어지고
-> str.charAt(i) - '0' 을 수행하면 2를 얻어 온다.
-> result = result * 10 + (str.charAt(i) - '0') : 12를 얻어 온다.
(2) 자바가 제공하는 api를 이용해 간단히 푸는 방법
public int getStrToInt(String str) {
return Integer.parseInt(str);
}
- Java의 Integer객체를 제공하는 parseInt()라는 메서드를 이용한다.
- 기본 자료형 int를 객체 타입으로 바꿔주는 클래스가 Integer 클래스이다.
- 이 클래스는 int를 객체로 바꾸는 일뿐 아니라 문자열로 들어온 값을 기본 자료형 int로 바꿔주는 일도 한다.
'Java > 모두의 자바' 카테고리의 다른 글
Chapter 10-59 문자열을 내림차순으로 배치하기 (0) | 2022.02.13 |
---|---|
Chapter 10-58 서울에서 김서방 찾기 (0) | 2022.02.13 |
Chapter 10-56 짝수와 홀수 (0) | 2022.02.13 |
Chapter 10- 55 수박수박수박수박수박수? (0) | 2022.02.13 |
Chapter 10-54 평균 구하기 (0) | 2022.02.12 |