2014-04-12 19 views
5

Điều kiện trong vòng lặp for được để trống và mã biên dịch và chạy.Đối với điều kiện trống vòng lặp

for(int i=0; ; i++) 
    System.out.print(i); //this code does not execute 
//code after this does not execute 

Nhưng, tôi không hiểu cách thức và lý do tại sao này là có thể.

+0

Bạn cũng có thể cung cấp ngữ cảnh xung quanh vòng lặp không? Liệu nó in bất cứ điều gì nếu bạn thêm 'System.out.print (" test ")' một dòng trước vòng lặp for? –

+0

Bạn có chắc chắn rằng phần được thực hiện? Nó sẽ chạy mãi mãi ... –

+0

có thể trùng lặp của [Đối với vòng lặp không có tham số trong Java] (http: // stackoverflow.com/questions/6051869/for-loop-with-no-parameters-in-java) – thumbmunkeys

Trả lời

2

Nếu nó không in được gì, điều đó có nghĩa là bạn không đạt được điều này cho vòng lặp nào cả.
Nếu bạn đang tiếp cận nó, nó sẽ in tất cả các số từ 0 đi lên.
Đây là bản in vòng lặp vô tận 0, 1, 2, ...
Vấn đề của bạn ở nơi khác (có thể trước vòng lặp for).

+0

Chỉ cần làm rõ: câu hỏi ban đầu là lý do tại sao vòng lặp này không in bất cứ thứ gì. –

2

Sau khi thử nghiệm này trong NetBeans nó đi như thế này:

Trong khi ứng dụng đang chạy: không có đầu ra

Khi ứng dụng được dừng lại: tất cả các con số được outputted trong giao diện điều khiển.

Vì vậy, nó hoạt động, hãy xem tài liệu tham khảo từ các câu trả lời khác để biết TẠI SAO nó hoạt động.

3

Chỉ cần thay đổi dòng dưới đây, mặc dù đây không phải là vấn đề.

System.out.print(i); //this code does not seems execute by checking o/p on console but in reals it works as well. 

Để

System.out.println(i); //this code works and you will be able to see o/p on console. 

HOẶC

System.out.print(i+" "); // this will show you some momentary action on Eclipse console. 

Dường như với tôi như một số vấn đề giao diện điều khiển in Eclipse IDE. Với phiên bản đầu tiên như bạn đã đề cập trong câu hỏi của mình, tôi không thể thấy bất kỳ đầu ra nào. Vì print() tiếp tục in trên cùng một dòng có thể không hiển thị với chúng tôi.

Tuy nhiên, nếu bạn chạy mã trong chế độ Gỡ lỗi và đặt điểm ngắt trên dòng trên. Breakpoint sẽ nhấn và bạn có thể thấy đầu ra được in là tốt.

Nhưng đối với phiên bản thứ hai, tôi có thể nhìn thấy nó in tất cả các số bắt đầu từ 0,1 ...

Đây là một similar discussion như chia sẻ bởi @PakkuDon

+2

Điều này có vẻ phù hợp với tôi. Tôi nghĩ [liên kết này] (http://stackoverflow.com/questions/10948983/system-out-print-doesnt-send-any-output-to-eclipse-console-why) có thể đáng để thêm vào bài đăng của bạn . – PakkuDon

+0

@PakkuDon được thêm vào. Cảm ơn!! – sakura

2

Một Đối với vòng lặp cấu trúc có ba điều Initialization , ConditionIncrement/Decrements đây không phải là trường bắt buộc. Java sẽ luôn thực thi mã và sẽ không hiển thị lỗi vì chúng tôi không vi phạm bất kỳ quy tắc cú pháp nào.

Ở đây for(i=0;;i++) System.out.println(i) sẽ vẫn được thực hiện và kết quả thành vòng lặp vô hạn vì Điều kiện luôn được coi là phần tùy chọn sao cho hai phần còn lại khác.

Do đó, chúng tôi không thể truy cập mã sau câu hỏi System.out.println(i) vì chúng tôi bị kẹt trong một vòng lặp vô hạn.

Các vấn đề liên quan