รันโค้ด Java รับค่าตัวเลขจากผู้ใช้งานด้วย Class Scanner ถ้าใส่ตัวเลขจะทำงานได้ปกติ แต่พอใส่ตัวอักษร หรือข้อความจะขึ้นข้อความ Error ว่า Exception in thread "main" java.util.InputMismatchException ปัญหานี้ต้องแก้ไขอย่างไร
import java.util.*;
class Test {
public static void main(String args[]){
Scanner sc = new Scanner( System.in );
System.out.print("กรุณากรอกตัวเลข : ");
int number = sc.nextInt();
System.out.print( "ตัวแปร number เท่ากับ "+number );
}
}
วิธีแก้ไข
แนะนำให้ใช้ try … catch เนื่องจากปัญหาดังกล่าวเกิดจาก ค่าที่รับจากผู้ใช้งานกับชนิดของตัวแปรไม่ถูกต้อง ไม่ตรงกัน เพราะตัวแปร number เป็นชนิดตัวเลข (int) หากผู้ใช้งานกรอกค่าที่ไม่ใช่ตัวเลขจะทำให้เกิดปัญหาดังกล่าว โดยคำสั่ง try … catch จะนำมาช่วยในกรณีถ้าผู้ใช่งานไม่ได้กรอกข้อมูลที่เป็นตัวเลข จะกำหนดให้ค่าตัวแปร number เท่ากับ 0 เพื่อให้โปรแกรมสามารถทำงานต่อได้ไม่เกิด Error ขึ้น สามารถเขียนโปรแกรมได้ดังนี้
import java.util.*;
class Test {
public static void main(String args[]){
Scanner sc = new Scanner( System.in );
int number;
try {
System.out.print("กรุณากรอกตัวเลข : ");
number = sc.nextInt();
} catch( Exception e ) {
number = 0;
}
System.out.print( "ตัวแปร number เท่ากับ "+number );
}
}