编程日记:Java学习之路(四)

4.循环语句

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

// ①while ( 布尔表达式 ) {    

// ②}
//

(2)do-while语句

// ①do {
// ②} 
while ( 布尔表达式 );//

while语句和do-while语句在使用时的区别:
当第一次布尔表达式的值为false时:
while语句的循环体一次也不执行
do-while语句的循环体会被执行一次

while语句存在的问题:
处理循环变量的代码分散在程序各处,代码不够紧凑。

(3)for语句

for ( int i = 0; i < 10; i++ ) {    

// 代码块}

while语句和for语句在使用时的区别:
while语句适用于无法确定次数的循环
只需要指定判断条件
读文件中的数据
for语句适用于可以确定次数的循环
需要指定循环次数(起点、终点、递增值)
累加计算

嵌套的循环语句:
循环语句可以互相嵌套
循环语句可以和分支语句互相嵌套

循环变量的作用范围:只在循环体内有效。

在写一个循环语句之前需要注意三件事情:

(1)循环变量:执行次数

(2)循环条件:在什么时候退出

(3)循环体:

4.2 控制语句:
·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: for ( int i = 1; i < 9; i++ ) {
    for ( int j = 1; j < 9; j++ ) {
        if ( j > 5 ) {
            break loop;        }
    }
}

continue语句:
在循环语句中,跳出本次循环重新判断循环条件
配合if语句使用,当满足某一条件时跳出本次循环
在嵌套的循环语句中,配合标签跳出指定的循环语句的本次循环过程
同break语句

return语句:
退出函数
如果函数为主函数,则退出程序

死循环:

while ( true ) {
    // 代码块}
for ( ; ; ) {
    // 代码块}

死循环不是错误,有些程序需要死循环。
如果一个循环中包含break语句,就不是死循环。

项目需求:
实现一个ATM,程序启动后要求输入密码,如果密码正确,则进入主界面,否则再次要求输入密码,连续三次输入错误则退出程序。
在主界面中有四个选项,分别为查询余额、存款、取款和退出,用户选择相应的功能后会有对应的提示引导用户进行操作,如果用户选择退出,则退出本程序,否则再次显示主界面。

代码:

import java.util.Scanner;

public class Java_day04_02_ATM {
    public static void main(String[] args){
        //初始化模块
        int password = 123456789;
        double BALANCE = 10000.0;
        System.out.println("请输入密码:");
        int use_password1=0;
        for(int i = 0;i<3;i++){
            Scanner s = new Scanner(System.in);
            int passworduse = s.nextInt();
            if(passworduse==password){
                while (true) {
                    System.out.print("1.余额查询 ");
                    System.out.print("2.存款 ");
                    System.out.print("3.取款 ");
                    System.out.println("4.退出");
                    Scanner q = new Scanner(System.in);
                    int XuanXiang = q.nextInt();
                    switch (XuanXiang) {
                        case 1:
                            System.out.println("您的余额为:"+BALANCE);break;
                        case 2:
                            System.out.println("请输入存款金额:");
                            Scanner w = new Scanner(System.in);
                            int cq = w.nextInt();
                            if(cq>=0) {
                                BALANCE += cq;
                                System.out.println("存款成功,您的余额为:" + BALANCE);
                            }
                            else{
                                System.out.println("输入金额不符,存款失败");
                            }
                            break;
                        case 3:
                            System.out.println("请输入取款金额:");
                            Scanner e = new Scanner(System.in);
                            int qk = e.nextInt();
                            BALANCE -= qk;
                            if(qk>=0 || qk<=BALANCE){
                                System.out.println("取款成功,您的余额为:"+BALANCE);
                            }else{
                                System.out.println("输入金额不符,或余额不足,取款失败");
                            }
                            break;
                        case 4:
                            System.out.println("感谢您的使用,再见");
                            return;
                    }
                }
            }
            if(i<=1){
                System.out.println("密码输入错误");
            }else {
                System.out.println("输入密码错误三次,程序退出");
            }
        }
    }
}

练习:

(1)从键盘输入两个整数,要求计算两个整数之间所有整数的和。

import java.util.Scanner;

public class Java_day04_03 {
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        System.out.print("请输入第一个数:");
        int a = s.nextInt();
        System.out.print("请输入第二个数:");
        int b = s.nextInt();
        int sum = 0;
        for(int i = a+1;i<b;i++){
            sum += i;
        }
        System.out.print("这两个数之间整数的和为:"+sum);
    }
}

(2)从键盘输入一个整数m,输出使用“*”组成的边长为m的三角形。例如m = 3时,输出:

import java.util.Scanner;

public class Java_day04_04 {
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        for(int i = 0;i<n;i++){
            for(int j = 0;j<=i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

扩展:

关键字:final指示常量(main方法内)

final double CM_PER_INCH=2.54;

static final设置类常量(main方法外)

public static final double CM_PER_INCH=2.54

我们可以自定义枚举类型,枚举类型包括有限个命名的值

enum Size{small,medium,large};
Size s = Size.small

四舍五入运算:

(int)Math.round(x)

这里仍然要进行强制类型转换,因为round方法返回的是long类型,由于存在信息丢失的可能性,所以只有使用显示的强制类型转换,才能够将long类型转换为int类型

字符串是不可被修改的,但是可以拼接

greeting = greeting.substring(0,3)+"p"
posted @ 2021-10-21 18:37  MachineHe  阅读(55)  评论(0)    收藏  举报