Trang Chủ Tài chính Cá nhân Lập trình java và lặp lại vòng lặp - núm vú

Lập trình java và lặp lại vòng lặp - núm vú

Mục lục:

Video: Java Cơ Bản 21 Vòng lặp while 2025

Video: Java Cơ Bản 21 Vòng lặp while 2025
Anonim

Để làm cho các vòng lặp của chương trình Java dễ dàng hơn và dễ hiểu hơn, bạn cần phải biết các câu lệnh break and continue của Java ảnh hưởng như thế nào đến các vòng lặp lặp lại.

Tuyên bố đột phá của Java

Hãy tham gia chương trình dưới đây. Chương trình ngẫu nhiên tạo ra một số từ 1 đến 10, và lặp đi lặp lại yêu cầu người dùng đoán số đó.

Liệt kê 1

nhập tĩnh java. lang. Hệ thống. ngoài; nhập khẩu java. util. Máy quét; nhập khẩu java. util. Ngẫu nhiên; public class GuessAgain {public static void main (String args []) {Bàn phím máy quét = máy quét mới (Hệ thống.in); int numGuesses = 0; int randomNumber = new Ngẫu nhiên (). nextInt (10) + 1; ngoài. println ("************"); ngoài. println ("Chào mừng bạn đến với Game đoán"); ngoài. println ("************"); ngoài. println (); ngoài. in ("Nhập một int từ 1 đến 10:"); int inputNumber = bàn phím. nextInt (); numGuesses ++; while (inputNumber! = RandomNumber) { ra ngoài. println (); ngoài. println ("Thử lại …"); ngoài. in ("Nhập một int từ 1 đến 10:"); inputNumber = bàn phím. nextInt (); numGuesses ++; } ra ngoài. in ("Bạn thắng sau"); ngoài. println (numGuesses + "guesses."); bàn phím. close ();}}

Hình dưới đây cho thấy một chạy của mã. Người sử dụng làm cho năm đoán. Mỗi lần xung quanh, máy tính kiểm tra xem đoán có chính xác không. Dự đoán sai sẽ tạo ra yêu cầu thử lại. Để đoán đúng, người dùng sẽ bị kích thích Bạn giành chiến thắng, cùng với số lần đoán mà họ thực hiện. Máy tính lặp lại nhiều câu lặp đi lặp lại, kiểm tra mỗi lần qua để xem liệu đoán của người dùng có giống với số ngẫu nhiên tạo ra không. Mỗi khi người sử dụng đoán, máy tính sẽ cộng thêm 1 lần để dự đoán. Khi người dùng đưa ra dự đoán chính xác, máy tính sẽ hiển thị số đó.

Có gì lúng túng về chương trình này? Vâng, một vài câu xuất hiện nhiều lần trong chương trình. Thông thường, một tuyên bố được sao chép từ một phần của chương trình sang một chương trình khác không gây ra mối quan tâm. Tuy nhiên, chiến lược tổng thể có vẻ đáng ngờ. Chương trình lấy một số từ người dùng trước vòng lặp và (lại) bên trong vòng lặp.

ra ngoài. in ("Nhập một int từ 1 đến 10:"); int inputNumber = bàn phím. nextInt (); numGuesses ++; while (inputNumber! = RandomNumber) {out. println (); ngoài. println ("Thử lại …"); ra ngoài. in ("Nhập một int từ 1 đến 10:"); inputNumber = bàn phím. nextInt (); numGuesses ++; }

Mã này sử dụng một thủ thuật tiêu chuẩn để làm cho các vòng làm việc. Nó được gọi là priming một vòng lặp. Mẫu là

Nhận đầu vào trong khi đầu vào bạn có không phải là đầu vào cuối { Nhận đầu vào nhiều hơn }

Ngay lúc bắt đầu của vòng lặp while, máy tính kiểm tra một điều kiện phải làm với đầu vào của người dùng. Vì vậy, máy tính không nhập vòng lặp cho đến khi người dùng đưa ra một số đầu vào. Sau đó, khi máy tính nằm trong vòng lặp, máy tính sẽ yêu cầu nhập nhiều hơn để tiếp tục lặp lại vòng lặp của vòng lặp. Các trick có vẻ lạ, nhưng nó hoạt động.

Nhà phát triển sử dụng kỹ thuật này, priming một vòng lặp, tất cả các thời gian, do đó, nó không thể là xấu. Nhưng có một cách khác.

Liệt kê 2

nhập tĩnh java. lang. Hệ thống. ngoài; nhập khẩu java. util. Máy quét; nhập khẩu java. util. Ngẫu nhiên; public class GuessAgain {public static void main (String args []) {Bàn phím máy quét = máy quét mới (Hệ thống.in); int inputNumber, numGuesses = 0; int randomNumber = new Ngẫu nhiên (). nextInt (10) + 1; ngoài. println ("************"); ngoài. println ("Chào mừng bạn đến với Game đoán"); ngoài. println ("************"); ngoài. println (); trong khi (đúng) { ra ngoài. in ("Nhập một int từ 1 đến 10:"); inputNumber = bàn phím. nextInt (); numGuesses ++; if (inputNumber == randomNumber) { phá vỡ; } ra ngoài. println (); ngoài. println ("Thử lại …"); } ra ngoài. in ("Bạn thắng sau"); ngoài. println (numGuesses + "guesses."); bàn phím. close ();}}

Từ quan điểm của người dùng, mã trong Ví dụ 2 thực hiện chính xác điều tương tự như mã trong liệt kê 1. (Để xem kết quả của một trong hai chương trình, xem hình trên). sự khác biệt là liệt kê 2 chỉ có một cuộc gọi đến bàn phím. nextInt. Cuộc gọi đó nằm trong vòng lặp, vì vậy máy tính phải nhập vòng lặp mà không cần kiểm tra bất kỳ đầu vào nào.

Nếu bạn nhìn vào điều kiện của vòng lặp, bạn có thể thấy cách hoạt động này. Điều kiện của vòng lặp luôn đúng. Không có vấn đề gì đang xảy ra, điều kiện của vòng lặp luôn vượt qua thử nghiệm của nó. Vì vậy, điều kiện của vòng lặp là một gian lận lớn. Bạn không bao giờ nhảy ra khỏi vòng lặp bằng cách không kiểm tra trong điều kiện của vòng lặp. Thay vào đó, bạn nhảy ra ngoài khi bạn nhấn tuyên bố phá vỡ bên trong vòng lặp (và bạn nhấn tuyên bố phá vỡ đó khi bạn vượt qua rào cản if (inputNumber == randomNumber)). Toàn bộ hoạt động rất độc đáo.

Với một tuyên bố phá vỡ, máy tính nhảy ra khỏi chỉ một vòng lặp. Nếu vòng lặp đó xảy ra là bên trong một vòng lặp khác (một vòng ngoài) máy tính không nhảy bên ngoài của vòng ngoài.

public class BreakOutOfLoop {public static void main (String [] args) {

cho (int i = 0; i <3; i ++) { cho (int j = 0; j <100; j ++) { Hệ thống. ngoài. in (j + ""); if (j> 9) {break;} } Hệ thống. ngoài. println ("Tôi đã nổ ra!"); } }} Để minh họa, hình dưới đây chứa đầu ra của mã trước:

Khi máy tính đạt đến câu lệnh break, điều khiển nhảy tới câu lệnh I broke out.Tôi đã phát biểu ra ngoài

bên ngoài của vòng lặp j nhưng nó bên trong vòng lặp for i. Theo quan điểm của một lập trình viên, mã trong Liệt kê 2 là tự nhiên hơn mã trong Liệt kê 1. Sau khi tất cả, trò chơi tiếp tục như thế nào? Người dùng đoán, sau đó máy tính kiểm tra đoán, và sau đó (nếu đoán là không chính xác) máy tính nói "Hãy thử lại. "Đó là chuỗi các sự kiện như được mô tả trong Liệt kê 2. Nhưng trong Liệt kê 1, mã bên trong vòng lặp dường như mô tả các sự kiện theo thứ tự ngược lại: Vòng lặp" Hãy thử lại "và sau đó người dùng nhập một số.

Liệt kê 2 cung cấp một sự thay thế tốt đẹp cho kỹ thuật lót vòng lặp trong Liệt kê 1. Vậy tại sao các lập trình viên quan tâm đến các vòng lặp? Các tuyên bố phá vỡ có những hạn chế ẩn nào không? Vâng, câu trả lời phụ thuộc vào quan điểm của bạn. Một số lập trình viên nghĩ rằng tuyên bố phá vỡ trong vòng lặp là khó hiểu. Tất cả các cú nhảy từ tuyên bố để tuyên bố làm cho họ chóng mặt và nhắc nhở họ về cái gì đó từ những năm 1960 được gọi là

spaghetti code . Trong câu lệnh Pascal by Example , tác giả B. Burd nói "Lập trình với goto giống như đi du lịch vòng quanh Paris bằng cách bơi qua hệ thống cống rãnh của nó. các đoạn cắt ngắn, nhưng không ai trong số đó đáng để dùng "). Cách này hay cách khác, các câu lệnh ngắt quãng trong các vòng lặp là ngoại lệ, không phải là nguyên tắc. Sử dụng chúng nếu bạn muốn, nhưng không mong đợi để tìm thấy nhiều người trong số họ trong mã của người khác của Java. Câu lệnh tiếp tục của Java

Liệt kê 3 cung cấp nhiều phần mềm bí mật hơn cho các chương trình của bạn. Hãy tưởng tượng một trò chơi mà ngẫu nhiên tạo ra ba con số từ 1 đến 20. Người sử dụng mất năm lượt đoán các con số. Khi người dùng nhập đúng đoán, chương trình sẽ chúc mừng người dùng. ("Good guess", chương trình nói) Khi người dùng gõ sai, chương trình sẽ không phản hồi.

Liệt kê 3 chứa một số mã để làm cho nó xảy ra.

Liệt kê 3

nhập tĩnh java. lang. Hệ thống. ngoài; nhập khẩu java. util. Máy quét; nhập khẩu java. util. Ngẫu nhiên; public class GuessAgainAndAgain {public static void main (String args []) {Bàn phím máy quét = máy quét mới (Hệ thống.in); int inputNumber; int randNum1 = new Ngẫu nhiên (). nextInt (20) + 1; int randNum2 = new Ngẫu nhiên (). nextInt (20) + 1; int randNum3 = new Ngẫu nhiên (). nextInt (20) + 1; ngoài. println ("************"); ngoài. println ("Chào mừng bạn đến với Game đoán"); ngoài. println ("************"); ngoài. println (); cho (int i = 0; i <5; i ++) {out. in ("Nhập một int:"); inputNumber = bàn phím. nextInt ();

if (inputNumber! = RandNum1 && inputNumber! = RandNum2 && inputNumber! = RandNum3) { tiếp tục; } ra ngoài. println ("Tốt đoán!"); ngoài. println ();} ra. in ("Các con số được"); ngoài. in (randNum1 + ""); ngoài. in (randNum2 + ""); ngoài. in (randNum3 + ""); bàn phím. close ();}} Con số này cho thấy một chạy của chương trình như vậy.

Câu lệnh tiếp tục của Java nói với máy tính để vượt qua các câu lệnh còn lại trong vòng lặp.Nghĩa là, thay vì thực thi các câu lệnh còn lại trong vòng lặp, máy tính sẽ chuyển sang lặp lại vòng lặp tiếp theo. Vì vậy, trong Ví dụ 3, khi inputNumber không phải là bất kỳ số ngẫu nhiên tạo ra của chương trình, máy tính sẽ nhảy qua mã "Good guess", tăng bộ đếm vòng lặp (biến i) và yêu cầu người dùng nhập một giá trị đầu vào khác. Thay vào đó, máy tính sẽ nhảy ra khỏi vòng lặp, và thực hiện bất cứ câu lệnh nào xuất hiện sau vòng lặp.)

Bạn có thể dễ dàng viết lại Ví dụ 3 do đó mã không có tuyên bố tiếp tục. Bạn phải đặt mã "Tốt đoán" bên trong một câu lệnh if, nhưng điều đó sẽ ổn thôi. Câu lệnh continue không làm nhiều để cải thiện giao diện của chương trình Listing 3. Nhưng khi bạn muốn tránh mã lồng bên trong nếu câu lệnh, câu lệnh tiếp tục có ích.

Có thể, trong ứng dụng của bạn, phần còn lại của vòng lặp là một chuỗi các câu lệnh phức tạp. Bạn không muốn làm cho trình tự này có vẻ phức tạp hơn bằng cách đóng nó bên trong câu lệnh if. Hoặc có thể, trong ứng dụng của bạn, bạn chỉ hiếm khi bỏ qua phần còn lại của vòng lặp, và bạn muốn nhấn mạnh điều hiếm có này bằng cách không bao gồm phần còn lại của vòng lặp trong câu lệnh if. Trong cả hai trường hợp, một tuyên bố tiếp tục có thể chính xác là sự lựa chọn đúng.

Lập trình java và lặp lại vòng lặp - núm vú

Lựa chọn của người biên tập

Cách lọc một nguồn dữ liệu kết hợp trong Word 2013 - núm vú

Cách lọc một nguồn dữ liệu kết hợp trong Word 2013 - núm vú

Trong tài liệu Word 2013, lọc một nguồn dữ liệu loại trừ các bản ghi nhất định (hoặc xem một cách khác, nó chỉ bao gồm một số bản ghi) dựa trên một hoặc nhiều tiêu chí mà bạn chỉ định. Ví dụ: bạn có thể muốn chỉ bao gồm các địa chỉ từ một thành phố hoặc tiểu bang nhất định, hoặc chỉ những địa chỉ phù hợp với địa chỉ ...

Cách Tìm Stuff bạn không thể gõ trong Word 2007 - núm vú

Cách Tìm Stuff bạn không thể gõ trong Word 2007 - núm vú

Word 2007 giúp tìm các ký tự đặc biệt, không in được trong tài liệu của bạn. Sử dụng hộp thoại Tìm và Thay thế, bạn có thể tìm kiếm những thứ như tab, dấu phân cách, dấu thập phân, khoảng trống và những thứ khác mà bạn không thể tạo ra từ bàn phím. Gọi hộp thoại Tìm và Thay thế. Nếu cần thiết, hãy nhấp vào nút Thêm để ...

Cách Tìm Định dạng trong Word 2007 - núm vú

Cách Tìm Định dạng trong Word 2007 - núm vú

Bạn có thể sử dụng lệnh Tìm để đánh cắp tài liệu Word 2007 của bạn để định dạng thông tin. Ví dụ, nếu bạn chỉ muốn tìm những trường hợp của từ lie có chữ đậm, bạn có thể làm điều đó. Ví dụ này tìm kiếm trứng ngỗng văn bản với kích thước phông chữ là 24 điểm trong một ...

Lựa chọn của người biên tập

Làm thế nào để Thoả Nhận Hợp Đồng Máy chủ Web - núm vú

Làm thế nào để Thoả Nhận Hợp Đồng Máy chủ Web - núm vú

Trên thực tế, đa số của máy chủ web không hoàn lại tiền nếu bạn để lại trước khi thời hạn hợp đồng của bạn kết thúc. Trong thực tế, nếu bạn có một thỏa thuận giá rẻ trên hosting của bạn, nó có thể có các điều khoản và điều kiện yêu cầu bạn xem ra thời hạn của hợp đồng hoặc trả tiền cho đặc quyền ...

Cách quản lý tập tin với Control Panel của Website - núm vú

Cách quản lý tập tin với Control Panel của Website - núm vú

Bảng điều khiển của bạn cung cấp cho bạn một cách tiện dụng để quản lý các tệp của bạn mà không cần máy chủ FTP được lưu trữ trên web. Đây là một cái gì đó phổ biến cho hầu hết các bảng điều khiển nhưng đôi khi có nhãn khác nhau một chút. Ví dụ, hầu hết các máy chủ gọi nó là File Manager, nhưng DreamHost gọi nó là webFTP. Sử dụng Trình quản lý Tệp là

Cách Quản lý Người dùng với Quản lý Máy chủ Web - núm vú

Cách Quản lý Người dùng với Quản lý Máy chủ Web - núm vú

Cây thư mục riêng trên máy chủ nơi tập tin của nó được giữ. Là chủ sở hữu của máy chủ, bạn có quyền truy cập superuser cho toàn bộ máy chủ, có nghĩa là bạn có thể xem tất cả các tệp tin của chủ tài khoản khác. Tất cả các tập tin tài khoản được lưu giữ trong các thư mục bên trong một thư mục gọi là home, ...

Lựa chọn của người biên tập

Tạo một Cột trang web mới trong SharePoint 2010 - núm vú

Tạo một Cột trang web mới trong SharePoint 2010 - núm vú

SharePoint 2010 có một thực thể cột trang web cho phép bạn để sử dụng lại các cột trên nhiều danh sách. Khi bạn tạo một cột mới trong danh sách của mình, bạn tạo ra một cột danh sách - có nghĩa cột chỉ có thể được sử dụng trong danh sách đó. Các cột của trang web được tạo ở cấp cao nhất của trang web nhóm của bạn và có thể ...

Tạo Tuỳ chỉnh Chủ đề cho SharePoint 2010 Sử dụng PowerPoint - núm vú

Tạo Tuỳ chỉnh Chủ đề cho SharePoint 2010 Sử dụng PowerPoint - núm vú

Cho nhiều nhà thiết kế trang web và chủ sở hữu SharePoint 2010 , ý tưởng để có thể tùy chỉnh chủ đề của họ là rất thú vị. Mặt khác, nhiệm vụ chọn nhiều màu có thể có vẻ khó chịu với những người biết họ thích gì khi họ nhìn thấy nó nhưng gặp sự cố khi lựa chọn. Nếu bạn ở trong ...

Tạo trang web mới trong SharePoint 2010 - núm vú

Tạo trang web mới trong SharePoint 2010 - núm vú

Bạn có thể tạo một bộ sưu tập trang web mới trong SharePoint theo hai cách - bằng cách sử dụng Quản trị Trung tâm hoặc thông qua Tạo trang web Tự phục vụ. Sử dụng Quản trị Trung tâm đòi hỏi các quyền được cấp phép, thường là hạn chế đối với nhân viên CNTT. Tạo trang web tự tạo là một tính năng của SharePoint cho phép CNTT trao quyền cho việc tạo bộ sưu tập trang web mới ...