Devdit
 

Exception in thread main java.util.InputMismatchException คือ วิธีแก้ไข

1.1K

รันโค้ด 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 );
    }
}
แก้ไข 2 ปีที่แล้ว
ชอบ
ลิ้งก์
แชร์
Devdit มีช่อง YouTube แล้ว
เราสร้างวิดีโอเกี่ยวกับเทคโนโลยี ทำตามง่ายๆ