30/09/2018, 19:47

[Java] Hỏi ý nghĩa câu lệnh!

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);
    }
Kgt viết 21:52 ngày 30/09/2018

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ị.

Việt Dũng Lê viết 22:01 ngày 30/09/2018

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

Heiji Hattori viết 21:50 ngày 30/09/2018

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 à.

Phan Hoàng viết 21:57 ngày 30/09/2018

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à.

Heiji Hattori viết 21:55 ngày 30/09/2018

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

Bài liên quan
0