(단, 입력되는 정수는 -1073741824 ~ 1073741824 이다.)
2개의 정수가 공백으로 구분되어 입력된다.
** 주의 : 계산의 결과가 int 범위를 넘어가는지를 잘 생각해 보아야 한다.
두 정수의 합을 출력한다.
123 -123
0
처음 답안
public class CU1038 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a+b);
}
}
>>> 1073741824 1073741824
-2147483648
이렇게 나와버림
처음에 a, b의 범위가 int에 들어가니 괜찮을거라 생각했지만, 둘을 더했을 때 int의 최대 범위가 넘어가는 것은 생각하지 못했다. 그래서 합을 long으로 받아서 출력하도록 변경하였다.
int a = sc.nextInt(); //1073741824
int b = sc.nextInt(); //1073741824
long c = a + b; //-2147483648
System.out.println(a+b);
그랬더니 int + int의 연산이므로 int의 결과가 나오고 이를 long으로 받는 구색이 되어버려서 의미가 없어졌다. 입출력의 결과는 같았다.
그래서 두 입력을 저장도 long으로 받아서 출력하는 방법으로 바꾸었다.
import java.util.Scanner;
public class CU1038 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextInt();
long b = sc.nextInt();
System.out.println(a+b);
}
}
nextInt()
로 받은 이유는 어차피 int 범위 내의 수를 받기 때문이다.