JAVA의 정석

숫자를 문자열로 문자열을 숫자로

499.token.required 2023. 7. 22. 15:51

1) 숫자를 문자열로 바꾸려면 어떻게 할까 ?

 

우선 스캐너를 불러와 숫자를 입력 받는다 .

 

그리고 입력받은 숫자를 화면에 출력한다.

 

하지만 "입력한 숫자 : " 라는 문자열과 + num이 되었으므로 

 

아까 전 입력받은 숫자는 문자열로 표기된다. 

 

우리는 이 과정을 통해 지금까지 자연스레 출력해왔던 숫자들이 모.두 문자열로 출력되어왔다는 사실을 알 수 있다. 

 

예를 들어보자. 빈 문자열 "" + num + 7 을 한다면 무엇이 나올까 ?

 

당연히 입력받은 숫자 3과 7의 합이 10이 나올 것 같지만

 

"" + num 즉 "3" 이되고  , "3" + 7 이되어 "37"의 숫자가 화면상에 출력된다. 

 

우리는  자연스럽게 숫자를 문자열로 출력해왔다는 사실을 이 과정을 통해 증명한 셈인 것이다.

그렇다면 어떻게해야 입력받은 숫자를 특정 숫자를 더해서 출력할 수 있을까? 

위 화면처럼 printf를 활용하면 입력받은 숫자와 특정 숫자를 더해서 화면에 출력할 수 있다.

 

그럼 이제 문자열을 숫자로 바꾸는 작업을 진행해보자.

 

2) 문자열을 숫자로 바꾸려면 어떻게 할까 ?

 

문자열을 정수로 바꾸고 싶다면  Integer.parseInt() 

 

문자열을 실수로 바꾸고 싶다면 Double.parseDouble()  을 통해서 문자열을 실수 혹은 정수로 바꿀 수 있다. 

 

우선 s에 문자열 5를 담아보자.

 

문자열을 출력했으니 당연히 정수인 5와 더하면 "5" + 5가 되어 "55"가 되는 모습을 확인할 수 있다. 

당연히 case 1에서도 문자열 과 문자열이 합하여졌으니 정수 5가 더해져도 55가 출력될 것이다.

 

case2 역시 마찬가지로 (s + 5) 즉 "5" + 5가 되므로 55가 나오는 모습을 볼 수 있다. 

 

그렇다면 case 3은 어떨까 ? 

 

문자열을 숫자로 변환한 num2에는 정수가 저장되었으니 10이 출력되지 않을까 ?

 

 

정답은 55이다. 

 

맨 처음 보았던 예제처럼  "case 3 : 문자열을 숫자로 변형된 값은 = " 이라는 문자열이 접두 되어 있기 때문에 num2 + 5  는 55가 출력되

 

는 모습을 볼 수 있다. 

 

정말 저 접두된 문자열 때문에 숫자가 문자열로 바뀐 것일까? 의심된다면 접두된 문자열을 지우고 문자열을 정수로 바꾼 num2와 5를 더해

 

서 출력해보자. 

 

 

 

이제는 더 이상의 의심의 여지가 없다. 문자열을 맨 앞에 둔다면 뒤에 있는 정수가 모두 영향을 받아 문자열로 출력될 것이다.

 

그렇다면 어떻게 해야 문자열로 바뀌지 않고 정수끼리 더해서 출력할 수 있을까? 위의 c의 문법처럼 %d를 활용하는 방법도 있겠지만...

 

 

괄호를 이용하면 된다.

 

결국 위 결과처럼 우선순위가 중요한 과정이라면, 정수끼리 먼저 더해주고 문자열을 출력해주면 그만이다. 

 

 

 

 

이제는 필자가 원하는 화면을 출력할 수 있게 되었다. num2에 문자열이었던 "5" 를 Integer.parseInt()를 이용하여 저장해주고, 

 

그 값을 출력과 동시에 정수 5와 더하는 프로그램을 구현한 것이다. 다음 포스팅은 문자열이 아닌 문자의 변환 까지 다뤄볼 생각이다.

 

자바는 다른 언어들보다 생각해야할 요소가 많은 언어이다. 간단한 입출력마저도, 조그만한 실수를 만들어 갈 수 있기 때문에 

 

더 섬세함이 필요한 언어임을 알고 꼼꼼히 코드를 살펴보아야 한다.