Một số khó khăn khi người dùng nhập số không đúng như yêu cầu

Đề bài của em như sau:
Trước hết, văn bản menu được in ra màn hình. Sau đó, người dùng chọn một tùy chọn bằng cách nhập một số nguyên. Tiếp theo, theo lựa chọn của người dùng, chương trình sẽ thực hiện một hành động (dẫn đến các văn bản màu trong switch…case). Câu hỏi của em là làm thế nào nếu mình nhập số nhỏ hơn một hoặc lớn hơn 5 thì nó sẽ in ra là “Số bạn nhập không có” sau đó, mình sẽ nhập lại, nếu mình nhập đúng một trong 5 số thì chương trình mới chạy bình thường.

Em cảm ơn ạ.

 import java.util.Scanner;
 public class console_programs {
 public static void user_input(int n) {
     while(n!=5){
        Scanner sc = new Scanner(System.in);
 //lựa chọn của người dùng 
        System.out.print(
                " \n [1] Add item \n [2] Item list \n [3] Edit an item \n [4] Remove an 
    item \n [5] Quit\n"
        );
        System.out.print("Choose an option ");

        n = sc.nextInt();\
       //khi người dùng chọn số từ 1 đến 5
        switch (n) {
            case 1:
                System.out.format( "%n Add a new item %n");
                break;
            case 2:
                System.out.format("%n Listing all items %n");
                break;
            case 3:
                System.out.format("%n Edit an item %n");
                break;
            case 4:
                System.out.format("%n Remove an item %n");
                break;
            case 5:
                System.out.format("%n Goodbye! %n");
                break;

        }
    }
}

public static void main (String []args){
    Scanner sc = new Scanner(System.in);
    System.out.print(
            " \n [1] Add item \n [2] Item list \n [3] Edit an item \n [4] Remove an item \n [5] Quit\n"
    );
    System.out.print("Choose an option ");
        int n = sc.nextInt();
        user_input(n);
}

}

Code C dưới đây giúp cậu lấy được một số nằm trong khoảng [lower, upper]:

int getIntBetween(int lower, int upper) {
	int res;

	do {
		res = getInt();
		if(res < lower || res > upper) {
		  printf("Invalid integer. Please enter a correct integer in range [%d, %d]!\n", lower, upper);
		}
	} while(res < lower || res > upper);

	return res;
}

int getInt() {
	int result;

	while(scanf("%d", &result) != 1) {
		printf("This is not an integer. Gimme another one: ");
		while(getchar() != '\n');
	}

	while(getchar() != '\n');

	return result;
}

Ý tưởng là như nhau. Cậu tự code Java version của đoạn code đó nhé! :smile:

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?