반응형
[Error Note][Java] java.util.InputMismatchException: For input string
애러코드
Exception in thread "main" java.util.InputMismatchException: For input string: "100000000000"
at java.base/java.util.Scanner.nextInt(Scanner.java:2264)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
찾은 경위
백준 11382번 문제 꼬마 정민 풀이 중 아래 코드에서 에러 발생
Scanner scan = new Scanner(System.in);
int num1 = scan.nextInt();
int num2 = scan.nextInt();
int num3 = scan.nextInt();
scan.close();
해결 방법
int 타입을 long 타입으로 바꾸어 해결
Scanner scan = new Scanner(System.in);
long num1 = scan.nextLong();
long num2 = scan.nextLong();
long num3 = scan.nextLong();
scan.close();
위의 문제 풀이의 입력값은 1 <= A,B,C <= 10^12 이다.(10^12 보다 작거나 같은 자연수)
무지성으로 int 타입으로 입력을 받았다가 오류가 나서 찾아보니 2147483647가 넘는 값은 long 타입으로 입력 받아야 한다는 것을 알았다.
-2^31 <= int <= 2^31 - 1
추가 사항
위 에러는 위와 같은 경우뿐만 아니라 변수에 지정한 타입과 입력된 타입이 다를 때 나타난다.
위 에러가 나타난다면 숫자↔문자 간의 입력인지 확인하고, 변수와 입력하는 값이 둘다 숫자라면 변수에 지정된 타입의 용량을 초과하지는 않았는지 확인하자.
전체 코드
package implementation;
import java.util.Scanner;
public class practice {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
long num1 = scan.nextLong();
long num2 = scan.nextLong();
long num3 = scan.nextLong();
scan.close();
long result = num1 + num2 + num3;
System.out.println(result);
}
}
반응형
'Error Note > Java' 카테고리의 다른 글
[Error][Java] Dangling meta character '+' near index 0+ 해결 (0) | 2023.05.06 |
---|
최근댓글