Try catch input

Cho em hỏi một chút ạ.
Em có đoạn code sau:

int a;
Scanner sc = new Scanner(System.in);
System.out.print("Enter book price: ");
try{
        a = sc.nextInt();
}catch (InputMismatchException e){
        System.out.println("Invalid ");
         sc.nextLine();
         System.out.print("Enter book price: ");
          a = sc.nextInt();
         }
System.out.print("50% off: "+(a*50)/100);

Ý tưởng của em là: Nếu người dùng nhập sai kiểu dữ liệu của a thì nó sẽ bắt lỗi. Nhưng code của em nếu 2 lần người dùng nhập sai liên tiếp thì nó sẽ ra exception và không bắt lỗi nữa. Vậy làm thế nào để làm cho nếu người dùng nhập sai nhiều lần thì vẫn có thể try_catch ạ. Em xin cảm ơn.

nhập

  • lỗi => nhập
  • không lỗi => done (không làm gì thêm)
    như vậy, nếu bước nhập xảy ra lỗi (hay còn gọi là chưa nhập xong), ta sẽ lặp lại vấn đề
boolean isDone = false; // chưa nhập gì thì hiển nhiên là chưa xong
while (!isDone) {
    try {
        // làm gì đó
        // ....

        // gán isDone = true để đánh gấu là đã xong việc
        isDone = true;
    }
    catch (...) {
        // làm gì đó khi catch được exception gì đó
    }
}
5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?