循环语句:
当某个条件满足时反复执行一段代码块,直到这个条件不满足时跳出循环继续执行后面的代码。
循环语句有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; } } } } }