반응형

[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

추가 사항

위 에러는 위와 같은 경우뿐만 아니라 변수에 지정한 타입과 입력된 타입이 다를 때 나타난다.

위 에러가 나타난다면 숫자↔문자 간의 입력인지 확인하고, 변수와 입력하는 값이 둘다 숫자라면 변수에 지정된 타입의 용량을 초과하지는 않았는지 확인하자.

int 공식문서

long 공식문서

InputMismatchException 공식문서

전체  코드

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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기