
M.n cho mình hỏi là làm thế nào ở những trường hợp như nhập sai ở _mscongto thì chương trình cho phép nhập _mscongto luôn chứ không phải nhập lại toàn bộ?
Hỏi về try-catch trong java
Đặt mỗi phần nhập thông tin ra thành 1 hàm con rồi cũng làm try catch y như hàm NhapTT.
Mình nghĩ đến cách đó rồi nhưng mà có cách nào tối ưu hơn không bạn?
tại mình thấy viết tách nó ra các phương thức nhập riêng thì dài quá
Bạn làm như mình nhé ,
import java.util.Scanner;
/**
*
* @author Nguyen Huu Quyen
*/
public class NumberValidation {
public static int getInt(Scanner sc, String prompt) {
int number = 0;
boolean isValid = false;
while (isValid == false) {
System.out.print(prompt);
if (sc.hasNextInt()) {
number = sc.nextInt();
isValid = true;
} else {
System.out.println("Lỗi, Vui lòng nhập một số nguyên ");
}
sc.nextLine();
}
return number;
}
public static double getDouble(Scanner sc, String prompt) {
double number = 0;
boolean isValid = false;
while (isValid == false) {
System.out.print(prompt);
if (sc.hasNextDouble()) {
number = sc.nextDouble();
isValid = true;
} else {
System.out.println("Lỗi, Vui lòng nhập một số thực");
}
sc.nextLine();
}
return number;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = NumberValidation.getInt(sc, "Nhập Vào Một Số Nguyên :");
}
}
Bạn thấy đấy như vậy với cách viết trên bạn có thể dùng nó ở mọi nơi một cách gọn gàng nhất, ứng với mỗi trường hợp khác nhau , bạn chỉ cần truyền một câu hướng dẫn nhập khác thôi , ví dụ của bạn là "Nhập vào số công tơ " chẳng hạng . Bạn có thể lưu class NumberValidation này vào Project của bạn và dùng nó khi cần bằng cách gọi NumberValidation.getYYY(sc , “Câu gợi ý”);
Ở chỗ YYY bạn có thể dựa theo ý tưởng trên viết thêm các phương thức khác như getDate ,getDoubleWithinRange, V.v
Chúc bạn thành công ^^~
Hữu Quyền.
Dạ. Cảm ơn, mình sẽ nghiên cứu nó 
theo em thì dùng try-catch trong do-while thì cũng gần như cách anh nghuuquyen cũng không ngắn hay dài hơn nhau là mấy 
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?