Tại sao code nhập số phải khởi tạo cho biến?

Chào anh chị em và các bạn trên forum , em có đoạn code này dùng để khởi tạo Phương thức Nhập.
Khi khai báo biến n nếu em không khởi tạo giá trị thì bị báo lỗi
Còn nếu em khởi tạo int n = 0 ; thì lại chạy được
em muốn hỏi là tại sao ở đó ta lại phải khởi tạo giá trị cho biến n ạ .

public static int nhap()
    {
        Scanner input = new Scanner(System.in);
        boolean check= false;
		int n=0;
		while(!check){
			System.out.print(" ");
			try{
				n= input.nextInt();
				check= true;
			}catch(Exception e){
				System.out.println("Ban phai nhap so! hay nhap lai...");
				input.nextLine();
			}
		}
		return (n);
    }

Nếu biến n là variable của lớp thì ko cần khời tạo nó sẽ assign = 0.
Vì cậu dùng cấu trúc try-catch và kết thúc hàm cậu trả về n. Do đó cậu buộc phải khởi tạo biến n. Nếu phát sinh exception thì rõ ràng n vẫn chưa đc khởi tạo và đến lệnh return trả về 1 biến scalar chưa đc gán gía trị.

2 Likes

Em cám ơn anh rất nhiều ạ , em đã hiểu rồi ^^

cho em hỏi ké tại sau câu lệnh cuối là input.nextLine(); chứ không phải là input.nextInt(); và khi ta bỏ câu lệnh đó đi thì chương trình lặp vô hạn à.

Vì câu lệnh này là kiểm tra số nguyên, ví dụ
Nhập tuổi:
Đúng bạn phải gõ là 6 -> hàm nextInt nó capture được số 6.
Giờ bạn là nhập là Sáu -> nó nhẩy vào exception, nếu không có nextLine nó quay về đầu và lại gọi cái nextInt ra, lại tiếp tục Exception -> vô hạn. nextLine để clear cái input lỗi ý mà.

4 Likes

à hiểu rồi, cảm ơn bác nhé.

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