- 문제상황

그렇다면 내 코드에 어느 부분이 문제일까?
import java.io.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String numbers = scanner.nextLine();
String [] number = numbers.split(" ");
int num1 = Integer.parseInt(number[0]);
int num2 = Integer.parseInt(number[1]);
int num3 = Integer.parseInt(number[2]);
System.out.println(num1+num2+num3);
}
}
위와 같이 코드를 만들고 인텔리제이에서 확인해봤을 때는 출력 결과가 정상적으로 나왔지만, 백준에서는 자꾸 런타임 에러(NumberFormat)가 발생했다.
- 원인
내 입력 값들은 띄워쓰기 빼고 모두 숫자이기 때문에 띄어쓰기로 문자열을 나누면 정수 외 다른 타입은 없는데 어디가 문제인지 이해가 가지 않았다.
결국 포기하고 다른 분들의 답안을 참고해보니, 입력 시 A,B,C가 0보다 크고 10의 12제곱보다 작다는 조건이 있어 변수가 int형이 아닌 long형이어야 했던 것이다.
- 해결방법
그렇다면 어떻게 해결해야할까?
나는 간단히 int를 long으로 바꿔줬더니 맞는 결과값이 나왔다.
import java.io.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String numbers = scanner.nextLine();
String [] number = numbers.split(" ");
long num1 = Long.parseLong(number[0]);
long num2 = Long.parseLong(number[1]);
long num3 = Long.parseLong(number[2]);
System.out.println(num1+num2+num3);
}
}
백준을 풀 때 평소 조건은 잘 생각하지 않고 풀어도 큰 문제가 없었지만, 이번 기회를 통해 조건도 잘 생각해서 코드를 짜야겠다는 생각을 하게 되었다.
다른 분들도 나와 같은 실수를 하지 않길 바란다.