# 각 자리수의 합 #### CODE <a class='btn btn-default' href='/codes/22680'>Link</a> ``` public class SumDigits { public static void main(String[] args) { int num = 374; int a = num / 100; int b = (num % 100) / 10; int c = num % 10; System.out.println("총합: " + a + b + c); System.out.println(a + b + c); } } ``` #### INPUT ``` ``` #### OUPUT ``` 총합: 374 14 ``` System.out.println("총합: " + a + b + c); System.out.println(a + b + c); a + b + c가 위에는 문자열?로 출력되고, 아래는 숫자로 계산되는 것 같은데 왜 그런지 궁금합니다.
그 부분은 "총합: " + a 이 부분의 '+'와 a+b의 '+'의 차이때문에 그렇습니다. 괄호 내부의 파라메터들을 연산한 결과값을 도출해야하는데 그 과정에서 "총합:"+a 에서 +는 concatenation 즉 문자열 붙이기를 한 후 결과값으로 "총합: 3" 이 나오게 되고 그 이후의 연산도 마찬가지입니다. 그러나 a+b 는 정수+정수이므로 결과값으로 더하기 연산을 한 정수가 나오게 됩니다. 만약에 "총합: 14"로 나오게 하려면 `System.out.println("총합: "+(a+b+c));`와 같이 괄호를 써주시면 됩니다. <br> +도 양쪽의 input 2개를 받아 output 1개를 내는 함수같다고 보시면 됩니다.
# 문자열 더하기 숫자는, 문자열입니다. 때문에, 아래의 계산 순서를 따라 “총합: 374”가 출력 됩니다. ``` System.out.println("총합: " + a + b + c); // => "총합: 3" + b + c // => "총합: 37" + c // => "총합: 374" ``` ## 해결법 괄호를 사용하여 숫자를 먼저 더해보세요. ``` System.out.println("총합: " + (a + b + c)); // 총합: 14 ```