循環語句
循環語句:
當某個條件滿足時反復執行一段代碼塊,直到這個條件不滿足時跳出循環繼續執行后面的代碼。
循環語句有3種
while
do whi
for
學循環語句需要確定哪些事情
循環幾次,什么時候退出,循環的內容。
while循環語句:
while循環開始后,先判斷條件是否滿足,如果滿足就執行循環體內的語句,執行完畢后再回來判斷條件是否滿足,如此無限重復;直到條件不滿足時,執行while循環后邊的語句。簡單來講就是說while循環是先判斷后循環, 判斷如果滿足條件進入循環 本次循環后再次判斷 。舉個例子:
while(布爾表達式 ){ //循環內容 }
do while
先執行do 后面的內容再循環
do { //代碼語句 }while(布爾表達式)
for循環
for(初始化; 布爾表達式; 更新){ // 代碼語句 }
嵌套的循環語句: 循環語句可以互相嵌套 循環語句可以和分支語句互相嵌套
控制語句
控制語句有:
break語句
continue語句
return語句
break語句:
在switch語句中,跳出switch語句執行后面的代碼 在循環語句中,跳出循環執行后面的代碼 配合if語句使用,當滿足某一條件時跳出循環 在嵌套的循環語句中,配合標簽跳出指定的循環語句 break語句只能跳出離自己最近的循環語句,如果要跳出多個循環語句,需要配合標簽使用
for ( int i = 1; i < 9; i++ ) { for ( int j = 1; j < 9; j++ ) { if ( j > 5 ) { break; } } }
跳出循環用loop
loop: for ( int i = 1; i < 9; i++ ) { for ( int j = 1; j < 9; j++ ) { if ( j > 5 ) { break loop; } } }
continue語句:
在循環語句中,跳出本次循環重新判斷循環條件 配合if語句使用,當滿足某一條件時跳出本次循環 在嵌套的循環語句中,配合標簽跳出指定的循環語句的本次循環過程 同break語句
break語句和continue語句在使用時的區別:
return語句:
退出函數
如果函數為主函數,則退出程序
死循環
死循環不是錯誤,有些程序需要死循環。
如果一個循環中包含break語句,就不是死循環。
實現一個ATM項目:
實現一個ATM,程序啟動后要求輸入密碼,如果密碼正確,則進入主界面,否則再次要求輸入密碼,連續三次輸入錯誤則退出程序。
在主界面中有四個選項,分別為查詢余額、存款、取款和退出,用戶選擇相應的功能后會有對應的提示引導用戶進行操作,如果用戶選擇退出,則退出本程序,否則再次顯示主界面。
初始化模塊:
初始化登錄密碼 6位數字,使用int類型
初始化賬戶余額 余額為任意的數值,使用double類型
初始化Scanner
int password = 123456; double balance = 100000.00D; Scanner scanner = new Scanner( System.in );
登錄模塊:
驗證密碼
用戶有三次輸入密碼的機會,重復的操作並且次數確定,使用for循環語句
每次都要輸出的提示信息使用輸出語句輸出
使用輸入語句讀取用戶輸入的一個整數
判斷是否和初始密碼相等,不相等則繼續循環,相等則跳出,使用if語句和break語句
為了能夠判斷是密碼正確跳出循環還是三次輸入不正確跳出循環,需要使用一個boolean類型的變量做標記
boolean validity = false; for ( int i = 0; i < 3; i++ ) { System.out.println( "請輸入密碼:"); int input = scanner.nextInt(); if( input == password ) { validity = true; break; } else { System.out.println( "密碼錯誤!"); } }
業務模塊: 輸出菜單
如果密碼正確,則進入此模塊
只要用戶不選擇退出,就重復輸出菜單等待用戶選擇,不確定次數,使用while循環或do-while循環均可
使用多個輸出語句輸出菜單項,每個菜單項前有對應編號
用戶輸入對應菜單項的編號,進入相應的功能,使用switch語句
if ( validity ) { while ( true ) { System.out.println( "請選擇功能:" ); System.out.println( "1\t查詢余額:" ); System.out.println( "2\t存款:" ); System.out.println( "3\t取款:" ); System.out.println( "4\t退出:" ); int input = scanner.nextInt(); …… } }
if ( validity ) { while ( true ) { …… switch ( input ) { case 1: …… case 2: …… case 3: …… case 4: …… } } }
業務模塊: 查詢余額
用戶選擇1時,輸出當前用戶的余額
case 1: System.out.println( "您的余額為:" + balance + "元"); break;
業務模塊:
存款
提示用戶輸入金額
修改用戶的余額 使用if語句判斷用戶輸入是否合法,並提示用戶存款是否成功
case 2: System.out.println( "請輸入存款金額:" ); double money = scanner.nextDouble(); if ( money > 0 ) { balance += money; System.out.println( "存款成功!" ); } else { System.out.println( "存款失敗! " ); } break;
業務模塊: 取款
提示用戶輸入金額
修改用戶的余額
使用if語句判斷用戶輸入是否合法,並提示用戶存款是否成功 判斷余額是否大於用戶取款的金額
case 3: System.out.println( "請輸入取款金額:" ); double money = scanner.nextDouble(); if ( money > 0 && balance >= money ) { balance -= money; System.out.println( "取款成功!" ); } else { System.out.println( "取款失敗! " ); } break;
業務模塊: 退出
跳出while循環,使用break語句
break只能跳出switch,需要配合標簽使用
用戶出入錯誤,提示並輸出菜單,使用default子句
loop: while ( true ) { …… switch ( input ) { …… case 4: break loop; default: System.out.println( "請重新選擇" ); break; } }
完成版:
package com.mycode; import java.util.Scanner; public class four { public static void main(String[] args) { int password = 123456; //定義一個密碼 double balance = 1000000.0; //定義賬戶余額 boolean f = false; //定義f不正確 Scanner scanner = new Scanner(System.in); for (int j = 3; j >= 0; j--) { //輸入密碼次數 System.out.println("請輸入密碼"); int a = scanner.nextInt(); if (a == password) { //輸入正確的時候結束 f = true; break; } else { //否則從新輸入 System.out.println("密碼錯誤:請從新輸入密碼\n" + "剩余" + j + "次機會"); } } loop: while (f) { //循環 if (f == true) { //登錄界面 System.out.println("登錄成功\n\t請選擇你需要的服務"); System.out.println("1.查詢賬戶余額"); System.out.println("2.存款"); System.out.println("3.取款"); System.out.println("4.取卡"); int s = scanner.nextInt(); //定義一個輸入選項 switch (s) { //編輯菜單 case 1: System.out.println("您的賬戶余額為:" + balance); break; case 2: System.out.println("請輸入你想要存的的金額"); double money = scanner.nextDouble(); if (money % 100 == 0 & money >= 100) { balance += money; System.out.println("存款成功\n3賬戶余額為:" + balance); }else { System.out.println("請輸入100的倍數"); } break; case 3: System.out.println("請輸入你想要取走的金額"); double quk = scanner.nextDouble(); if (quk <= balance & quk % 100 == 0 & quk >= 100) { balance -= quk; System.out.println("取款成功\n賬戶余額:" + balance); } else if (quk > balance) { System.out.println("您的余額不足。"); } else { System.out.println("請輸入100的倍數"); } break; case 4: System.out.println("謝謝使用,再見!"); break loop; } } } } }