Java中的InputMisMatchException是什麼?如何處理它?


從Java 1.5開始引入Scanner類。此類接受File、InputStream、Path和String物件,使用正則表示式逐個讀取所有基本資料型別和字串(來自給定的源)。

使用此類提供的nextXXX()方法(例如nextInt()、nextShort()、nextFloat()、nextLong()、nextBigDecimal()、nextBigInteger()、nextLong()、nextShort()、nextDouble()、nextByte()、nextFloat()、next())從源讀取各種資料型別。

當您使用Scanner類從使用者獲取輸入時,如果傳遞的輸入與方法不匹配,則會丟擲InputMisMatchException異常。例如,如果您使用nextInt()方法讀取整數資料,而傳遞的值是字串,則會發生異常。

示例

import java.util.Scanner;
public class StudentData{
   int age;
   String name;
   public StudentData(String name, int age){
      this.age = age;
      this.name = name;
   }
   public void display() {
      System.out.println("Name of the student is: "+name);
      System.out.println("Age of the student is: "+age);
   }
   public static void main (String args[]){
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter your name: ");
      String name = sc.next();
      System.out.println("Enter your age: ");
      int age = sc.nextInt();
      StudentData obj = new StudentData(name, age);
      obj.display();
   }
}

執行時異常

Enter your name:
Krishna
Enter your age:
twenty
Exception in thread "main" java.util.InputMismatchException
   at java.util.Scanner.throwFor(Unknown Source)
   at java.util.Scanner.next(Unknown Source)
   at java.util.Scanner.nextInt(Unknown Source)
   at java.util.Scanner.nextInt(Unknown Source)
   at july_set3.StudentData.main(StudentData.java:20)

處理輸入不匹配異常

處理此異常的唯一方法是確保在傳遞輸入時輸入正確的值。建議在使用Scanner類從使用者讀取資料時,詳細說明所需的值。

更新於:2019年8月7日

4K+瀏覽量

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.