카테고리 없음
백준 자바 11382 - 런타임에러 : 문제에서 주어진 수의 범위를 잘 체크하자
wosrn
2023. 5. 19. 18:53
import java.util.Scanner;
public class Main{
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int a = input.nextInt();
int b = input.nextInt();
int c = input.nextInt();
System.out.println(a+b+c);
}
}
처음에 작성했던 코드인데, 이렇게 쓰면 런타임 에러가 난다. 처음에는 a,b,c를 일일이 입력받아서 런타임에러가 나는건가 싶어서 수 입력받는걸 반복문으로 해보려다가 결국 어찌저찌해서 배열을 써서 반복문으로 만들었지만 그렇게 해도 변함이 없었다 ㅜㅜ
import java.util.Scanner;
public class Main{
public static void main(String args[]) {
int [] ar = new int[3];
Scanner input = new Scanner(System.in);
for(int i=0;i<3;i++) {
ar[i]=input.nextInt();
}
System.out.println(ar[0]+ar[1]+ar[2]);
}
}
그래서 서치해본 결과 입력받을때 nextInt()를 쓴 것 때문에 런타임에러가 발생하는거였다 !
import java.util.Scanner;
public class Main{
public static void main(String args[]) {
Long [] ar = new Long[3];
Scanner input = new Scanner(System.in);
for(int i=0;i<3;i++) {
ar[i]=input.nextLong();
}
System.out.println(ar[0]+ar[1]+ar[2]);
}
}
int형보다 큰 값을 출력할 수도 있기 때문에 (1 ≤ A, B, C ≤ 10의 12승) nextLong(long:8byte) 을 써야 에러가 발생하지 않는다. 배열로 쓴걸 수정하기 귀찮아서 그냥 저대로 뒀는데 내가 처음 작성한 코드에서 nextInt를 long으로만 바꿔줘도 되고, 서치해보니 굳이 입력받은 수를 새 변수에 넣지 않고 (input.nextLong()+input.nextLong()+input.nextLong())을 출력해도 된다