2017-11-15 1 views
-2

몇 가지 질문을 살펴 보았지만 좋은 해결책을 찾을 수없는 것 같습니다.스레드 "main"의 예외 java.util.InputMismatchException. 스캐너 클래스

난 그냥 작동하지 않을 아주 간단한 코드가 있습니다. 사용자의 체중과 신장을 구한 다음 BMI를 계산합니다.

내가 입력 한 값은 매번 다릅니다. 하지만 변수 vikt는 85, 변수 langd는 1.80이라고 말할 수 있습니다. a 대신 a를 사용할 때 작동합니다. 그래도. 다음 오류가 발생합니다.

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:864) 
    at java.util.Scanner.next(Scanner.java:1485) 
    at java.util.Scanner.nextDouble(Scanner.java:2413) 
    at Labb2.BMI.main(BMI.java:32) 
C:\Users\Danne\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1 
BUILD FAILED (total time: 5 seconds) 

내가 사용하는 코드는 다음과 같습니다.

package Labb2; 

import java.util.Scanner; 

public class BMI { 

    public static void main(String[] args) { 

     Scanner viktObj = new Scanner(System.in); 
     Scanner langdObj = new Scanner(System.in); 

     double vikt; 
     double langd; 
     double bmi; 

     System.out.print("Ange din vikt: "); 
     vikt = viktObj.nextDouble(); 

     System.out.print("Ange din längd i meter (ex. 1.70): "); 
     langd = langdObj.nextDouble(); 

     bmi = vikt/(langd * langd); 
     System.out.printf("Ditt BMI är: %.2f", bmi); 
     System.out.println(""); 


    } 

} 
+0

나를 위해 작동합니다. 당신은 어떤 가치를 제공 했습니까? BTW에는 두 개의 스캐너가 필요하지 않습니다. 하나를 사용하여 콘솔에서 모든 데이터를 읽으십시오. – Pshemo

+0

먼저 사용자로부터 입력을 읽기 위해 두 개의 개별 스캐너 객체가 필요하지 않습니다. 입력하는 숫자가 이중 값이 아니기 때문에 오류가 발생합니다. –

+0

게시물을 편집하고이 예외의 원인이 된 입력 데이터를 표시하십시오. –

답변

1

오류가 삼가지 경우

1

) 대신 두 배의 잘못된 입력 형식을 (제공 할 수있다)에 발생할 수 있습니다.

try { 
    // ...Your code 
} catch (InputMismatchException ime) { 
    obj.next(); 
} 
1

입력 불일치 예외로 이중

2) 스캐너 클래스

Scanner scanner = new Scanner(System.in).useLocale(Locale.US); 

3) 또한 오류를 처리 할 수 ​​try-catch을 사용할 수 있습니다로 useLocale을해야 할 수도 있습니다에 입력을 제공하는 시도이다 귀하의 입력이 예상 입력과 다른 유형이기 때문입니다. 당신은 입력 hasNextDouble()이 그것을 만들 경우 항상 작동 루프 동안 넣어 확인할 수 있습니다

public static void main(String[] args) { 
     // TODO code application logic here 
     Scanner viktObj = new Scanner(System.in); 

     double vikt; 
     double langd; 
     double bmi; 

     System.out.print("Ange din vikt: "); 
     while(!viktObj.hasNextDouble()){ 
     System.out.println("Wrong input... please enter again!"); 
      viktObj.next(); 
     } 
     vikt = viktObj.nextDouble(); 

     System.out.print("Ange din längd i meter (ex. 1.70): "); 
     while(!viktObj.hasNextDouble()){ 
     System.out.println("Wrong input... please enter again!"); 
      viktObj.next(); 
     } 
     langd = viktObj.nextDouble(); 

     bmi = vikt/(langd * langd); 
     System.out.printf("Ditt BMI är: %.2f", bmi); 
     System.out.println(""); 




    } 
0

이유 왜 점점 오류 [예외] :

당신은 두 번, INT를 입력해야합니다

및 당신은이 예외가 발생하고 프로그램을 중지 문자열 thn을 입력하십시오. 당신은 다시 Scanner .Like의 또 다른 목적은 내가 예외 때문에 초급 수준의 설명되지 취급

주 사용하게 할 필요 만 다시 한 Scanner를 다시 사용할 수있는 하나의 Scanner으로 입력을 얻을 수 있습니다. 문제가 있으면 언제든지 직접 물어볼 것을 권장합니다. 난 당신처럼 같은 오류가 점점 오전 때 나는 InputMismatchException

케이스를 받고 Code i run

예.

InputMismatchException

0

당신이 번호를 뭔가를 입력하지 않은 것 같다. nextDouble을 사용하면 문자열이 아닌 개의 숫자 만 입력 할 수 있습니다.이 도움이되기를 바랍니다. 오류를 피하기 위해 try-catch를 사용할 수 있습니다.

관련 문제