流程控制语句

流程控制

用户交互Scanner

介绍

实现程序和人的交互,java.util.Scanner是java5的新特性,我们可以通过Scanner类来获取用户的输入

基本语法
Scanner s = new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取之前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据
next()

1.一定要读取到有效字符后才可以结束输入

2.对输入有效字符之前遇到的空白,next()方法会自动将其去掉

3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符

4.next()不能得到带有空格的字符串

nextLine()

1.以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符

2.可以获得空白

顺序结构

java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
顺序结构是最简单的算法结构
语句与语句之间,框与框之间是从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构

选择结构

if单选结构

语法:

if(布尔表达式){
	执行代码
}
if双选结构
if(布尔表达式){
	执行代码
}elex{
	执行代码
}
if多选择结构
嵌套if结构
switch多选择结构

Switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支

Switch语句中的变量类型可以是:

​ byte、short 、int或者char

​ 从javaSE7开始

​ Switch支持字符串String类型

​ 同时case标签必须为字符串常量或字面量

循环结构

while循环

结构
while循环的三要素

1.循环初始条件 2.循环判断条件 3.循环的改变条件

whlie(布尔表达式){
	//循环内容
	//循环迭代(改变条件)
}

只要布尔表达式为true,循环就会一直执行下去

一般情况下我们是会让循环停止下来的,需要一个让表达式失效的方式来结束循环

如果循环条件一直为true就会造成死循环,在正常编程中应该要尽量避免死循环。

do while循环
结构
do{
	代码块
}while(布尔表达式);

它与while循环不一样之处在于,不管条件成立不成立都至少会执行一次

for循环
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
for循环执行的次数是在执行前就确定了的

语法格式:

for(初始化;布尔表达式;更新迭代) {
		//代码块
}

break&continue

break

​ break在任何循环语句的主体部分,都可以用break控制的流程。break用于强制退出循环,不执行循环中剩余的语句

continue

​ continue语句用在循环语句体中,用于终止某一次循环过程跳过本次循环,执行下次条件成立的循环

练习

for循環案例

package pro;

import java.util.Scanner;

public class Exercise01 {
	// 用户输入年和月,打印出这个月对应的日历信息
	// 只需要得到两个条件:假设输入的时2022 12
	// 1号是星期几 求出中间的总天数 = 【1900-2022)年的总天数+【1,12)月的总天数
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);

		// 1.用户输入年和月,保存到变量中
		System.out.println("请输入年份:");
		int year = input.nextInt();
		System.out.println("请输入月份:");
		int month = input.nextInt();

		// 2.计算出年总天数
		// 定义一个变量用来保存年的总天数
		int day1 = 0;
		for (int i = 1900; i < year; i++) {
			// 判断拿到的这一年是闰年还是平年
			if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
				day1 += 366;
			} else {
				day1 += 365;
			}
		}

		// 测试
		System.out.println("年的总天数:" + day1 + "天");
		// 3.计算出这一年月的总天数 -- {1-12)月的总天数
		// 定义一个变量用于存放{1-12)月的总天数
		int day2 = 0;
		for (int i = 1; i < month; i++) {
			if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {
				day2 += 31;
			} else if (i == 2) {
				// 在对年进行判断 看是闰年还是平年
				if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
					day2 += 29;
				} else {
					day2 += 28;
				}
			} else {
				day2 += 30;
			}
		}
		// 测试
		System.out.println("月的总天数为:" + day2 + "天");
		// 4.根据2和3的步骤计算出1号是周几
		// 将拿到的年总天数+月总天数 % 一周(7)进行取模拿到每月一号为星期几
		int index = 1 + (day1 + day2) % 7;
		// 打印测试一下
		System.out.println(index);
		// 5.这个月有多少天
		int days;
		if(month == 1|| month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
			days = 31;
		} else if(month == 2) {
				if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
					days = 29;
				}else {
					days = 28;
				}
		} else {
			days = 30;
		}
		// 6.打印
		//将星期先进行打印输出
		System.out.println("日\t一\t二\t三\t四\t五\t六");
		//先找到次月的一号将前面没有的打印制表符
		for (int i = 0; i < index; i++) {
			System.out.print("\t");//不换行
		}
		//将这个月的总天数打印出来
		for (int i = 1; i <= days; i++) {
			System.out.print(i);//直接打印这个月的天数
			//如果打印输出没超过七行打印制表符加这个数字
			if((i + index) % 7 == 0 ) {//当输出的这个天数 + 得到的每月一号为星期几 % 7 等于0时就打印换行否则就打印制表符
				System.out.println();
			} else {
				System.out.print("\t");
			}
		}

	}
}

九九乘法表 正-倒

package pro;

public class Demo01 {
	public static void main(String[] args) {
		//1.循环初始条件
		int i = 1;
		while(i <= 100) {//2.循环判断条件
			//循环的具体操作
			System.out.print("你怕不是哈!");
			//3.循环的改变条件
			i++;
		}
		
		for(int j = 0; j < 10; j++) {
			System.out.println("You are Good!");
		}
	}
}

```java
package com.fan.struct;

public class ForExercise05 {
    public static void main(String[] args) {
        //打印九九乘法表
        for (int j = 1; j <=9; j++) {
            for (int i = 1; i <= j; i++) {
                //先打印第一列
                System.out.print(i + "*" + j + "=" + (j * i) + "\t");
            }
            System.out.println();
        }

        System.out.println("---------------------------------------------------");

        for (int j = 9; j >= 1; j--){
            for (int i = 1; i <= j; i++){
                System.out.print(i + "*" + j + "=" + (j * i) + "\t");
            }

            System.out.println();
        }

    }
}

求出1-n的乘阶

package com.fan.struct;

import java.util.Scanner;

public class ForExercise06 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            //求出i对应的阶乘的值
            int result = 1;//用于存放结果
            for (int j = 1; j <= i; j++) {
                result *= j;
            }
            sum += result;
        }

        System.out.println("1-n的阶乘和: " + sum);

        input.close();
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值