30/09/2018, 17:26

Lỗi exception khi sử dụng mảng trong Java?

Mọi người cho em hỏi tại sao khi khai báo mảng ở vị trí 1 thì nó tung ra ngoại lệ, tức mình chỉ nhập đc 1 phần tử và ko nhập đc nữa, nhưng khai báo ở vị trí 2 thì nó ok. em thấy 2 vị trí này ko khác nhau mà. Ai giải thích dùm e dc ko ạ?

vũ xuân quân viết 19:28 ngày 30/09/2018

trình biên dịch của java không báo lỗi. Nhưng chạy sẽ bị văng lỗi exception.
ở vị trí số 1, n = 0. Trong java không có khởi tạo mảng không phần tử.
ở vị trí số 2 thì n bắt buộc phải nhập với giá trị > 0. Nên khi đến vị trí số 2 thì mảng được khai báo mảng có phần từ lớn hơn 0.

Nguyễn Huyền viết 19:37 ngày 30/09/2018

@masoivn cái vòng for cho i chay < n thì ok nhập đúng số phần tử, cho <= n thì lúc xuất nó báo lỗi là sao thế bạn? mảng xuất phát từ 0 nên cho nó <=n mới đúng chứ nhỉ?

vũ xuân quân viết 19:34 ngày 30/09/2018

ý huyền là for (int i = 0; i <= n; i++) chỗ khi chạy sẽ văng lỗi exception. Vì phần tử bắt đầu của mảng trong java là 0. Khác với C++, phần tử bắt đầu là 1.

Nguyễn Huyền viết 19:32 ngày 30/09/2018

vâng đúng là chỗ đó, trong java bắt đầu từ 1 ạ?

vũ xuân quân viết 19:27 ngày 30/09/2018

phần từ bắt đầu của mảng trong java là 0.

Nguyễn Huyền viết 19:34 ngày 30/09/2018

uấy e nhầm, hi, tks @masoivn

Trâm Miu viết 19:31 ngày 30/09/2018

Trong C++ hình như phần tử bắt đầu cũng là 0 mà nhỉ ^^ * thắc mắc *

Nam Nguyễn viết 19:30 ngày 30/09/2018

Trong C/C++ mảng bắt đầu từ 0, trong Pascal mới bắt đầu từ 1

BigCat viết 19:33 ngày 30/09/2018

Thứ nhất : ở trên là nhập số phần tử mảng(chỉ nhập 1 lần), ở dưới là nhập các phần tử mảng(nhập n lần)

Thứ Hai : Mảng trong java số phần tử phải >0.Tại vị trí đầu tiên bạn để n=0 là biến toàn cục nên mảng thứ nhất bị đẩy ra exception từ hàm main chứ không phải exception trong try của bạn. Sau khi bạn nhập n thì n này sẽ gán xuống mảng dưới. Vì vậy mảng dưới có số phần tử khác 0 ban đầu nên được chấp nhận.

Bài liên quan
0