循环语句

循环语句:

当某个条件满足时反复执行一段代码块,直到这个条件不满足时跳出循环继续执行后面的代码。

循环语句有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语句在使用时的区别:

Java循环语句_循环语句

 

 

 

return语句:

退出函数

如果函数为主函数,则退出程序

 

死循环

Java循环语句_跳出循环_02

 

 

 

死循环不是错误,有些程序需要死循环。

如果一个循环中包含break语句,就不是死循环。

 

实现一个ATM项目:

实现一个ATM,程序启动后要求输入密码,如果密码正确,则进入主界面,否则再次要求输入密码,连续三次输入错误则退出程序。

在主界面中有四个选项,分别为查询余额、存款、取款和退出,用户选择相应的功能后会有对应的提示引导用户进行操作,如果用户选择退出,则退出本程序,否则再次显示主界面。

Java循环语句_while循环_03

 

 

 

Java循环语句_嵌套_04

 

 

 

初始化模块:

初始化登录密码 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;
                }

            }


        }
    }
}