JAVA基础02——Java的控制结构

控制台的输出与输入

控制台输出

System.out.println(内容);

控制台输入

//1、导入输入工具
import java.util.Scanner;
//2、创建工具对象
Scanner input = new Scanner(System.in);
//3、控制台获取指定类型的变量值
int age = input.nextInt();
//4、在控制台输出输入数据
System.out.println(age);
//5、释放资源
input.close();

特殊:输入一个char类型字符

char gender;
Scanner input = new Scanner(System.in);
gender=input.next().charAt(0);

块作用域

  • 块,是指由若干条Java语句组成的语句,并用一对大括号括起来。块决定了变量的作用域。一块块可以嵌套在另一个块中。
public static void main(String[] args){
	int n;
	...
	{
		int k;
		...
	}//k is only defined up to here
}

注意:不能在嵌套的两个块中声明相同的变量

//例如:
public static void main(String[] args){
	int n;
	...
	{
		int k;
		int n;//Error:Variable 'n' is already defined in the scope
		...
	}
}

分支结构分类

if

单分支

  • 条件:关系表达式,由逻辑运算符连接的多个关系表达式,其最终结果必须是一个明确的布尔值

格式:

//语句只有一条
if(条件) 语句;

//多条语句
if(条件){
    语句块;//两行以上	>=2行
}

双分支

//双分支
if(条件){
    //代码块1
}else{
    //代码块2
}

多分支

  • 用于一段连续的数据区间。
if(条件){
    //代码块1
}else if(条件){
    //代码块2
}else if(条件){
    //代码块3
}
...
else{
    //代码块n
}

分支的嵌套

  • 在分支中还有分支叫作分支的嵌套
if(条件){
    if(条件){
        //代码块1
    }else{
        //代码块2
    }
}else if(条件){
    if(条件){
        //代码块3
    }else if{
        //代码块4
    }else{
        //代码块5
    }
}else if(条件){
    //代码块6
}
//...
else{
    //代码块n 
}

例题:

public class MonthDay {
    public static void main(String[] args) {
        //根据年和月判定,该年该月有多少天。
        //大月 31天:1,3,5,7    8,10,12
        //小月 30天:4,6        9,11
        //二月 平年28天,闰年29天

        //闰年规则:能被4整除但不能被100整除,或者能被400整除
        int year = 2000,mouth = 7,days = 0;

        //2月
        if(mouth==2){
            if(year%4==0 && year%100!=0 || year%400==0){
                days = 29;
            }else {
                days = 28;
            }
        }else if(mouth<8){//<8奇数月为大月,偶数为小月
            if(mouth%2==0){
                days = 30;
            }else {
                days = 31;
            }
        }else{//>=8,奇数为小月,偶数为大月
            if(mouth%2==0){
                days = 31;
            }else {
                days = 30;
            }
        }
        System.out.println(year+"年,"+mouth+"月有"+days+"天");
    }
}

switch…case

格式:
switch(WHAT?)

  1. String (jdk>=1.8)
  2. 数值
    2.1、char
    2.2、非long整数
    2.3、枚举
/*
	以算术表达式的结果值,从上到下,依次和常量n做等值比较。
	常量值不能重复
	算术表达式 == 常量
*/
/*
	break功能:结束分支
	如果break缺失会导致贯穿现象
	贯穿:从第一个匹配项开始执行,直到第一个break才结束。
	合理的运用贯穿现象可以高效的解决特定的问题
*/
/*
	整个switch(){}中只存在一个作用域,不可以存在同名变量
*/
switch(算术表达式){
    case 常量1:	//算术表达式 == 常量1
        //代码块
        break;	 //结束switch...case结构
    case 常量2:	//算术表达式 == 常量2
        //代码块
        break;
    case 常量3:
        //代码块
        break;
    default:
        //代码块
        break;
}

例题:
与上题相同,用switch编写并运用贯穿和三元运算符

 public static void main(String[] args){
        //输入年月,计算该月天数,使用switch...case,并利用贯穿
        int year = 2000,month = 4,days = 31;
        switch(month){
            case 4:case 6: case 9: case 11://贯穿
                days = 30;
                break;
            case 2:
                days = year%4==0 && year%100!=0 || year%400==0 ? 29 : 28;//三元运算
                break;
            default:
                System.out.println("请输入正确月份!");
                break;
        }
        System.out.println(year+"年"+month+"月有:"+days+"天");
}

循环

概念

  • 什么是循环?
    定义:重复性的操作
    注意:不是必须完全一样,但必须符合特定的规律

  • 循环四要素:
    1、条件(循环控制)变量的声明和【初始化】
    2、循环条件的构建
    3、循环体(在循环内部的语句块)
    4、条件变量的变化

  • 循环流程结构

在这里插入图片描述

循环类别

while循环

  • 特点:先判断后执行。

格式:

//条件(循环控制)变量的声明和【初始化】
while(条件){
    //循环体
    //条件变量的渐变
}

用while循环计算1+2+3+……+99+100的值

public static void main(String[] args){
	int sum = 0,num = 1;
	while(num<=100){
		sum += num;
		num++;
	}
	System.out.println(sum);
}

do…while循环

  • 特点:先执行后判断。

格式:

do{
    //循环体
}while(条件);

用do…while循环计算1+2+3+……+99+100的值

public static void main(String[] args){
	int sum = 0,num = 1;
	do{
		sum += num;
		num++;
	}while(num<=100);
	System.out.println(sum);
}

for循环

  • 特点:先判断后执行。

格式:

for(声明初始化;条件;变化){
    //循环体
}

用for循环计算1+2+3+……+99+100的值

public static void main(String[] args){
	int sum = 0;
	for(int num=1;num<=100;num++){
		sum += num;
	}
	System.out.println(sum);
}

循环嵌套

在循环内部还有循环叫作循环的嵌套。

for(变量1; 判断条件1; 变化控制1){
    语句块1
    
    for(变量2; 判断条件2; 变化控制2){
        语句块2
    }
	
	while(条件){
    	//循环体
    	//条件变量的渐变
	}
	
	do{
    	//循环体
	}while(条件);
	
 	语句块3
}
  • 二重循环结构:

在这里插入图片描述

计算 1!+2!+3!+……+99!+100! 的和

public static void mian(String[] args){
	int sum = 0,k;
	//外层循环控制100个数
	for(int i=1;i<100;i++){
		//阶乘为从1开始乘到自身。用k变量来计算乘积,每一个数都要从1开始乘。
		k = 1;
		//内部循环控制(1-i)个数
		for(int j=1;j<=i;j++){
			k *= j;
		}
		//累加
		sum += k;
	}
	System.out.println("sum:"+sum);
}

循环跳转语句

//【循环跳转语句】
break;//直接终止循环,在循环内部且在break后的语句都不做了
continue;//结束本次循环,在continue后的语句都不做了直接进入下一次循环
  • break流程
    在这里插入图片描述

  • continue流程
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值