04--Java 程序流程控制

系列文章专栏

JavaSE自学全路线



前言

Java 程序控制方式采用结构化程序设计中规定的三种基本流程结构,即顺序结构、分支结构、循环结构。


一、Java 输入(补充–Scanner)

输入:从键盘或者控制台获取不同类型的变量,需要使用Scanner类
步骤

  • 导包:import java.util.Scanner;
  • Scanner的实例化,即创建Scanner对象:Scanner scan = new Scanner(System.in);
  • 调用Scanner类的相关方法,来获取指定的变量,如 int age = scanner.nextInt();String name = scanner.next();

代码示例

import java.util.Scanner;  // 导包
class ScannerTest {
    public static void main(String[] args) {
  	Scanner scan = new Scanner(System.in); //创建Scanner对象
  
  	System.out.println("请输入你的姓名:");
  	String name = scan.next();
  	System.out.println(name);
  
  	System.out.println("请输入你的年龄:");
  	int age = scan.nextInt();
  	System.out.println(age);
  
  	System.out.println("请输入你的体重:");
  	double weight = scan.nextDouble();
  	System.out.println(weight);
  
  	System.out.println("你是否单身:(true/false)");
  	boolean isSingle = scan.nextBoolean();
  	System.out.println(isSingle);
  
  	//对于char型变量,Scanner没有提供相关方法,只能获取一个字符串
  	System.out.println("请输入你的性别:(男/女)");
  	String gender = scan.next();
  	char genderChar = gender.charAt(0); //提取字符串中指定位置的字符,从0开始
  	System.out.println(genderChar);
    }
}

二、顺序结构(常规都是)

三、分支结构

3.1 if … else

三种格式代码示例

public class IfTest {
    public static void main(String[] args) {
        // 第一种,true 则执行,false 则退出
  	int age = 65;
        if(age < 18 || age > 60){
   		System.out.println("需要监护人");
  	}
  	System.out.println("独立");
  
  	// 第二种,二选一
  	if(age > 18){
   		System.out.println("已成年");
  	}else{
   		System.out.println("未成年");
  	}
  
  	// 第三种,n选一
  	if(age < 0){
   		System.out.println("输入数据有误");
  	}else if(age < 18){
   		System.out.println("青少年");
  	}else if(age < 35){
   		System.out.println("壮年");
  	}else if(age < 60){
   		System.out.println("中年");
  	}else{
   		System.out.println("退休");  //else结构是可选的
  	}
    }
}

注意:多个 if … else 串联要特别注意判断顺序;注意 if 的边界条件;浮点数判断相等不能直接用==运算符,可利用差值小于某个临界值来判断;判断引用类型内容相等要使用 equals(),注意避免 NullPointerException。

3.2 switch - case

格式代码示例

public class SwitchTest {
    public static void main(String []args) {
        int num = 2;
  	switch(num){
  	case 0:
   		System.out.println("zero");
   		break;
  	case 1:
   		System.out.println("one");
   		break;
  	case 2:
   		System.out.println("two");
   		break;
  	default:
   		System.out.println("other");
   		break;
  	}
    }
}

使用注意说明

  • break 关键字是可选的,表明执行到此跳出 switch-case 结构,一般不要省略,建议打开 fall-through 警告;
  • switch 结构中的表达式,只能是:byte、short、char、int、枚举类型、String类型,不能是long、float、double、Boolean;
  • case 之后只能声明常量,不能声明范围;
  • default 结构是可选的,且位置灵活,建议打开 missing default 警告。

补充1:如果switch-case语句中多个相同语句,可以进行合并

public class SwitchTest {
    public static void main(String []args) {
        int score = 50;
  	switch(score/10){
  	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;
  	}
  
  	// 更简单的思路
  	switch(score/60){
  	case 0:
    		System.out.println("不合格");
    		break;
  	case 1:
    		System.out.println("合格");
    		break;  
  	}
    }
}

补充2:判断闰年标准----可以被4整除,但不可被100整除或可以被400整除------(year % 4 == 0 && year % 100 != 0) || year %400 == 0)

四 循环结构

4.1 for 循环

语法格式示例

/* 
For循环结构:
for(初始化条件;循环条件;迭代条件){
 循环体;
}
*/
//100以内偶数个数及偶数和
public class ForTest {
    public static void main(String []args) {
  	int sum = 0;
  	int count = 0;
  	for(int i = 1;i <= 100;i++){
   		if(i % 2 == 0){
    			//System.out.println(i);
    			sum += i;
    			count++;
   		}
  	}
  	System.out.println(count);
  	System.out.println(sum);
 }
}

说明:初始化部分可以声明多个变量,逗号隔开;迭代部分可以更新多个变量,逗号隔开

4.2 while 循环

语法格式示例

/*
while循环结构:
初始化部分;
while(循环条件部分){
    循环体部分;
    迭代部分;
}
*/
public class WhileTest {
    public static void main(String []args) {
  	int sum = 0;
  	//int count = 0;
  	int i = 1;
  	while(i <= 100){
   		if(i % 2 == 0){
    			System.out.println(i);
   		}
   		sum += i;
   		//count++;
   		i++;
  	}
  	System.out.println(sum);
  	//System.out.println(count);
 }
}

说明:注意 while 循环的迭代条件,一旦忘记,就可能导致死循环;while 和 for 循环可以相互转换,但两者的初始化条件部分作用范围不同

4.3 do-while 循环

语法格式示例

/*
do-while 循环结构:
初始化条件;
do{
 循环体;
 迭代条件;
}while(循环条件 --->是boolean类型);
*/
public class DoWhileTest {
    public static void main(String []args) {
  	int i = 1;
  	int sum = 0;
  	do{
   		if(i % 2 == 0){
    			System.out.println(i);
    			sum += i;
   		}
   		i++;
  	}while(i <= 100);
       	System.out.println(sum);
    }
}

说明:do-while 循环至少执行一次循环体。

4.4 嵌套循环

语法格式示例

//100以内所有质数
public class DoWhileTest {
    public static void main(String []args) {
  	boolean isZhiShu = true;
  	for(int i = 2;i <= 100;i++){    //内层遍历一遍,相当于外层循环体执行一次
   		for(int j = 2;j < i;j++){
    			if(i % j == 0){
    				isZhiShu = false;
    			}
   		}
   		if(isZhiShu == true){
    			System.out.println(i);
   		}
   		isZhiShu = true;
 	 }
    }
}

说明:若外层执行次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。

4.5 break、continue的使用

关键字使用范围相同点不同点
breakswitch语句、循环语句后无执行语句结束当前循环(本层)
continue循环语句后无执行语句结束本次循环

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值