Java教程

看完这篇文章,直接拿捏程序流程控制(超详解)

本文主要是介绍看完这篇文章,直接拿捏程序流程控制(超详解),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

好久不见,甚是想念!
大家好!

我是微风洋洋 今天这篇文章就是来和大家详细聊聊Java程序流程控制中的分支结构,希望大家读完有所收获,那我辛苦码字也就值了。如果你觉得对你有一丢丢启发的话,不妨 点赞、收藏、关注支持一下,你的支持将是我继续创作的最大动力。下一篇将介绍Java循环结构,不见不散~~~

文章目录

  • 一、顺序结构
  • 二、分支结构
    • if-else结构(条件判断结构)
      • 经典例题
    • switch-case结构
      • 经典例题

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组 合成能完成一定功能的小逻辑模块。

其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:

  • 顺序结构
    程序从上到下逐行地执行,中间没有任何判断和跳转。

  • 分支结构
    根据条件,选择性地执行某段代码。 有if…else和switch-case两种分支语句。

  • 循环结构 根据循环条件,重复性的执行某段代码。 有while、do…while、for三种循环语句。
    注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。

一、顺序结构

Java中定义成员变量时采用合法的前向引用。如:
public class Test{
int num1 = 12;
int num2 = num1 + 2;
}
错误形式:
public class Test{
int num2 = num1 + 2; int num1 = 12;
}
微风洋洋

二、分支结构

if-else结构(条件判断结构)

if语句三种格式:

  • if(条件表达式){
    执行代码块;
    }
  • if(条件表达式){
    执行代码块1;
    }
    else{
    执行代码块2;
    }
  • if(条件表达式1){
    执行代码块1;
    }
    else if (条件表达式2){
    执行代码块2;
    }
    ……
    else{
    执行代码块n;
    }

分支结构:if-else使用说明

  • 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
  • 语句块只有一条执行语句时,一对{}可以省略,但建议保留
  • if-else语句结构,根据需要可以嵌套使用
  • 当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
  • 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓当多个条件是“包含”关系时,“小上大下 / 子上父下”

如何从键盘获取不同类型的变量:需要使用Scanner类
命令行具体实现步骤:
1.导包:import java.util.Scanner;

2.Scanner的实例化:Scanner scan = new Scanner(System.in);

3.调用Scanner类的相关方法(next()/nextXxx),来获取指定类型的变量
对char型的获取,Scanner没有提供相关的方法,只能获取一个字符串

package com.weifengyangyang.contact;
//1.导包:import java.util.Scanner;
import java.util.Scanner;

public class ScannerTest {
	public static void main(String[] args){
		//2.Scanner的实例化:Scanner scan = new Scanner(System.in);
		Scanner scan = new Scanner(System.in);

		//3.调用Scanner类的相关方法(next()/nextXxx),来获取指定类型的变量
		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 isLove = scan.nextBoolean();
		System.out.println(isLove);
		
		//对char型的获取,Scanner没有提供相关的方法,只能获取一个字符串
		System.out.println("请输入你的性别:(男/女)");
		String gender = scan.next();
		char genderChar = gender.charAt(0);//获取索引为0位置上的字符
		System.out.println(genderChar);
	}
}

注意:需要根据相应的方法输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常,程序终止

经典例题

例1.岳小鹏参加Java考试,他和父亲岳不群达成承诺:如果:
成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone xs max;当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断

package com.weifengyangyang.contact;
import java.util.Scanner;
public class IfTest {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入岳小鹏的期末成绩(0-100)");
		int grade = scan.nextInt();
		
		if(grade == 100){
			System.out.println("奖励一辆BMW");
		}else if(grade > 80 && grade <= 99){
			System.out.println("奖励一台iphone xs max");
		}else if(grade >= 60 && grade <= 80){
			System.out.println("奖励一个 iPad");
		}else{
			System.out.println("什么奖励也没有");
		}
	}
}

说明:
1.else结构是可选的
2.当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓,当多个条件是“包含”关系时,“小上大下 / 子上父下”

例2.编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。

package com.weifengyangyang.contact;
import java.util.Scanner;
public class IfTest2 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入第一个整数");
		int num1 = scan.nextInt();
		System.out.println("请输入第二个整数");
		int num2 = scan.nextInt();
		System.out.println("请输入第三个整数");
		int num3 = scan.nextInt();
		
		int max,middle,min;
		if(num1 > num2){
			if(num3 > num1){
				System.out.println(num3+","+num1+","+num2);
			}else if(num3 < num2){
				System.out.println(num1+","+num2+","+num3); 
			}else{
				System.out.println(num1+","+num3+","+num2);
				 }
			
		}else if(num3 > num2){
			System.out.println(num3+","+num2+","+num1);
		}else if(num3 < num1){
			System.out.println(num2+","+num1+","+num3);
		}else{
			System.out.println(num2+","+num3+","+num1);
			}	
	}
}

说明:
1.if-else结构可以嵌套使用
2.如果if-else结构中的执行语句只有一行时,对应的{}可以省略,但是不建议省略

例3.对下列代码,若有输出,指出输出结果。

int x = 4; int y = 1; 
if (x > 2) {
if (y > 2)
System.out.println(x + y); 
System.out.println("atguigu");
} else
System.out.println("x is " + x);//输出:atguigu

int x = 4; int y = 1; 
if (x > 2) 
   if (y > 2)
   System.out.println(x + y); 
else
System.out.println("x is " + x);//输出:4

说明:
else配对按就近原则,与离else最近的if配对

switch-case结构

switch(表达式){
case 常量1:
语句1;
// break;
case 常量2:
语句2;
// break;
… …
case 常量N:
语句N;
// break;
default:
语句;
// break;

  • 根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句,当调用完执行语句后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case末尾结束为止

  • break,可以使用在switch-case结构中,表示一旦执行到次关键字,就跳出switch-case结构

  • switch结构中的表达式,只能是如下的6中数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)

  • case之后只能声明常量,不能声明范围

  • break关键字是可选的

  • default相当于if-else结构中的else。default是可选的,而且位置是灵活的

经典例题

例4.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输
出 “other”。
提示:String word = scan.next(); char c = word.charAt(0); switch©{}

package com.weifengyangyang.contact;
import java.util.Scanner;
public class SwitchTest2 {

	public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);
	System.out.println("请输入小写字母");
	String small = scan.next();
	char samllchar = small.charAt(0);
	
	switch(samllchar){
	case 'a':
		System.out.println('A');
		break;
	case 'b':
		System.out.println('B');
		break;
	case 'c':
			System.out.println('C');
			break;
	case 'd':
		System.out.println('D');
		break;
	case 'e':
		System.out.println('E');
		break;
	default:
		System.out.println("other");		
	}
	}
}

例5.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

package com.weifengyangyang.contact;
import java.util.Scanner;
public class SwitchTest3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入成绩(0-100)");
		int score = scan.nextInt();
		
		switch(score / 10){
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			System.out.println("不及格");
			break;
		default:
			System.out.println("及格");	
//更优的方法
switch(score / 60){
  case 0 :
    System.out.println("不及格");
    break;
  case 1 :
    System.out.println("不及格");
    break;
}
		}
	}
}

说明:如果switch-case中的结构中的多个case的执行语句相同,则可以考虑进行合并

关注,即可提高学习效率。Perfect!

这篇关于看完这篇文章,直接拿捏程序流程控制(超详解)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!