Java基础05(程序流程控制)

本文详细介绍了Java中的程序流程控制,包括Scanner类从键盘获取输入,顺序结构,分支结构(if...else和switch-case)以及循环结构(while, do...while, for)。特别强调了if...else和switch-case的使用场景和区别,以及for循环在打印特定模式时的应用。" 44417631,2865447,3D飞行路径分析:考虑地形的威胁评估,"['GIS', '三维分析', '飞行安全', '军事应用', '地理处理']
摘要由CSDN通过智能技术生成

Scanner:从键盘上获取不同类型的变量

  • 具体实现步骤
    • ①导包
import java.util.Scanner;
  • ②Scanner的实例化:
Scanner scan = new Scanner(System.in);
  • ③调用Scanner类的相关方法,来获取指定类型
int age = scan.nextInt();
System.out.println(age);

  • 注意:需要根据指定的方法,来输入指定类型的值。如果输入的数据类型与要求的数据类型不匹配的话,会报异常:InputMismatchException
    导致程序终止。

例子:

import java.util.Scanner;
class ScannerTest
{
	public static void main(String args[])
	{
		//2.Scanner的实例化
		Scanner scan = new Scanner(System.in);//从键盘输入
		
		//3.调用Scanner类的相关方法,来获取指定类型
		System.out.println("请输入你的姓名");
		String name = scan.next();	
		System.out.println(name);//输出
		
		System.out.println("请输入你的性别(男/女):");
		String gender = scan.next();//"男"-字符串
		char genderChar = gender.charAt(0);
		System.out.println(genderChar);
	}
}

1 顺序结构

2 分支结构

2.1 if…else结构

2.1.1 if…else结构的三种格式

if(条件表达式)
	{
		执行表达式1
	}

例子1:

int heartBeats = 79;
		if (heartBeats < 60 || heartBeats > 100)
		{
			System.out.println("进一步检查");
		}
if(条件表达式)
	{
		执行表达式1
	}
else
	{
		执行表达式2
	}

例子2:

int age1 = 19;
		if (age1 > 18)
		{
			System.out.println("你已成年");
		}
		else
		{
			System.out.println("未成年");
		}
if(条件表达式)
	{
		执行表达式1
	}
else if(条件表达式)
	{
		执行表达式2
	}
else if(条件表达式)
	{
		执行表达式3
	}
...
else
	{
		执行表达式n
	}

例子3:

int age = 37;
		if (age < 0)
		{
			System.out.println("输入不合法");
		}
		else if (age < 18)
		{
			System.out.println("青少年时期");
		}
		else if (age < 35)
		{
			System.out.println("青壮年时期");
		}
		else
		{
			System.out.println("其他时期");
		}

2.1.2 if…else结构的说明

  • ①当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
  • ②当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓
  • ③当多个条件是“包含”关系时,通常情况下,需要将范围小的声明在范围大的声明的上面。否则,范围小的就没有机会执行。
    例子:
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入你的成绩");
		int num = scan.nextInt();
		if (num < 60)
		{
			System.out.println("无奖励");
		}		
		else if (num <= 90)//跟下边的80 交换
		{
			System.out.println("一部手机");
		}
		else if (num <= 80)//
		{
			System.out.println("平板");
		}
		else if (num == 100)
		{
			System.out.println("一台车");
		}
  • ④当多个条件之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面
  • ⑤if-else结构是可以嵌套的,if-else结构中的语句只有一条时,可以省略

2.2 switch-case结构

2.2.1 switch-case结构的格式

switch(表达式)
{
case 常量1:
	执行语句1;
	//break;

case 常量2:
	执行语句2;
	//break;

case 常量3:
	执行语句3;
	//break;
...
default:
	执行语句n;
	//break;
	
  }

2.2.2 switch-case结构的说明

  • ①根据switch表达式中的,依次匹配各个case中的常量。一旦匹配成功,则进入相应的case结构中调用其执行语句,当调用完执行语句之后,则依然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止
  • ②break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
  • ③switch结构中的表达式,只能是以下的6种数据类型之一:byte,short,int,char,枚举型(JDK5.0新增的),String类型(JDK7.0新增)
  • ④case之后只能声明常量,不能声明范围,switch-case语句中的多个case可以合并

例子:

int score = scan.nextInt();
		int i = score / 10;
		switch (i)
		{
			case 0:
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:
				System.out.println("不及格");
				break;
			case 6:
			case 7:
			case 8:
			case 9:
			case 10:
				System.out.println("及格");
		}
  • ⑤break关键字是可选的
  • ⑥defalut:相当于if-else语句中的else,default结构也是可选的

2.2.2 switch和if语句的对比

  • ①if-else结构和switch-case结构在一定条件下可以互换
  • ②凡是可以使用switch-case结构的,都可以转换为if-else结构
  • ③既可以使用switch-case结构(同时,switch-case表达式情况不太多),又可以使用if-else结构的,优先选择switch-case结构。
    原因:switch-case结构效率高

例子:

int numDay = 0;
		System.out.println("请输入年份:");
		int year = scan.nextInt();
		System.out.println("输入月份:");
		int month1 = scan.nextInt();
		System.out.println("输入日:");
		int day = scan.nextInt();
		switch (month1)
		{
		case 12:
			numDay += 30;
		case 11:
			numDay += 31;
		case 10:
			numDay += 30;
		case 9:
			numDay += 31;
		case 8:
			numDay += 31;
		case 7:
			numDay += 30;
		case 6:
			numDay += 31;
		case 5:
			numDay += 30;
		case 4:
			numDay += 31;
		case 3:
			if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
			{
				numDay += 29;
			}
			else 
			{
				numDay += 28;
			}
			
		case 2:
			numDay += 31;
		case 1:
			numDay += day;

		}
		System.out.println( "今天是" + year + "年" + month1 + "月" + day + "日" + "为当年的第" + numDay + "天");
		

3 循环结构

循环语句的四个组成部分

  • ①初始化部分
  • ②循环条件部分—boolean类型表达式
  • ③循环体部分
  • ④迭代部分

说明:
通常情况下,循环结束的条件是因为②中循环条件返回false了

3.1 while结构

待补充

3.2 do…while结构

待补充

3.3 for结构

  • 语法格式:
for (①初始化部分;②循环条件部分 ;④迭代部分 )
		{
			③循环体部分
		}
  • 执行过程:
    ①—②—③—④—②—③—④—②—③—④—…—②

  • 说明:

    • ②循环条件部分为boolean类型表达式,当值为false时,退出循环
    • ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
    • ④可以有多个变量更新,用逗号分隔

    例子1:打印1~100之间所有是7的倍数的整数的个数及总和(体会设置计数器的思想)

int i2,sum2 = 0, account = 0;
		for (i2 = 1;i2 <= 100 ;i2++ )
		{
			if (i2 % 7 ==0)
			{
				sum2 += i2;
				account ++;
			}
		}
		System.out.println("sum2= " + sum2 + ", account= " + account);

例子2:编写程序从1循环到150,并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。

其结果如下图:
在这里插入图片描述

int i ;
		for (i = 1;i <=150 ;i++ )
		{
			System.out.print(i);
			if (i % 3 == 0)
			{
				System.out.print(" foo");
			}

			if (i % 5 == 0)
			{
				System.out.print(" biz");
			}
			if (i % 7 == 0)
			{
				System.out.print(" baz");
			}
			System.out.println();
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值