Java-流程控制-循环结构

版权声明:call me 刘英雄 https://blog.csdn.net/weixin_42526141/article/details/82757675

流程控制指的是对java代码执行顺序的控制,在控制中加上我们的逻辑处理,从而完成相应的目标。在java中,流程控制可以分为三类:顺序、分支、循环。

  • 顺序执行,表示逐行执行相应的语句,不涉及任何的关键字
  • 分支控制,则需要按照判断条件动态的去执行符合条件的语句
  • 循环控制,则需要按照循环判断条件动态的去执行循环语句

在代码编写过程中,我们通常用一对花括号将若干语句括起来,目的是从语法上将多条语句解释为一条语句

1、分支流程控制语句:

if语句

if(前提条件) 语句;

满足前提条件则执行语句,这是最简单的流程控制语句之一了。注意的一点事“前提条件”的结果必须为boolean型。true则执行。

if-else语句

if-else语句规定在满足前提条件的情况下执行某些操作,2、但若不满足呢?else在这里就体现了它的作用了。

格式:if(前提条件) 语句1 ; else 语句2;

说明:满足前提条件(true)则执行语句1,否则执行语句2.

switch语句

switch语句是一种具有处理多分支能力的流程控制语句。

switch(表达式){

case 值1 :语句1;

case 值12 :语句2;

……

[default:语句n;]

}

其中,要注意的一点是表达式的值必须是int、short、byte、char和枚举类型,jdk1.7之后可以使用String;值1和值2之间不能互相影响

switch语句的执行过程是:首先计算表达式的值,再与每个case后面的值作比较,若相同,则执行这个case后面的语句,直到遇到break或switch语句结束。若与所有的case后面的值比较后仍然没有相等的选项,则执行default后面的语句。

2、循环流程控制语句

while语句

格式:while(循环条件) 语句;

执行过程:判断循环条件,为true则执行语句,再回来判断循环条件……直到循环条件为false。因此,循环条件的结果必须为boolean值。

do-while语句

格式:do{语句序列}while(循环条件);

执行过程:执行循环体(语句序列),随后判断“循环条件”,为true则继续循环,为false则跳出。故此处循环条件结果依然为boolean值。而循环体至少执行了一次。

for语句

格式:for(初始化表达式;检测表达式;更新表达式)语句;

执行过程:“初始化表达式”是for语句第一个执行且只执行一次的语句。检测表达式必须是boolean型,用于 决定是否继续循环,更新表达式在每次循环体执行完毕后自动执行。

3、中断流程控制语句

Java中,中断流程控制语句主要包括break,continute和return。

break语句

break表示跳出当前循环,break可以用在switch\while\do...while\for语句中,

continue语句

continue和break类似,continue语句与break语句最大的区别是,break语句是跳出循环,而continue语句是提前结束此次循环,提早进入下次循环。


练习0:打印“加法表”

package com.liudm.demo2;

import java.util.Scanner;

public class SecondDemo {
	//输出一个加法表
	public static void main(String[] args) {
		System.out.println("请输入一个自然数:");
		
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		
		
		for (int i = 0, j = num; i<=num && j >= 0;i++,j--){
			System.out.println(i + "+" + j + "=" + (i+j));
		}
	}

}

练习1:打印如下图所示“星星”

练习2:打印如下图所示“星星”

练习3:打印如下图所示“星星”

练习4:打印如下图所示“菱形”

package com.liudm.demo3;

public class lingxing{
	public static void main(String[] args) {
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= 5-i; j++)
				System.out.print(" ");

			for (int k = 1; k <= i*2-1; k++)
			//for(int k = 0; k <= i*2-2; k++)
				System.out.print("*");

			System.out.println();
		}
		
		for (int i = 1; i <= 4; i++) {
			for (int j = 1; j <= i; j++)
				System.out.print(" ");

			for (int k = 7; k >=i*2-1; k--) 
				System.out.print("*");

			System.out.println();
		}
	}
}

练习5:打印“九九乘法表”

package com.liudm.demo3;

public class chengfabiao {
	public static void main(String[] args) {
		for (int i = 1; i <=9; i++) {
			for (int j = 1; j <=i; j++) {
				System.out.print(i + "*" + j + "=" + (i*j) + "\t");
			}
			System.out.println();
		}
	}
}

练习6:求1~1000以内的质数(质数也称合数)

练习7:求若干个学生的成绩总和和平均分。要求:循环从控制台录入若干个学生的成绩,求每个学生5门课程中总分、平均分,在控制台输出。

package com.liudm.demo3;

import java.util.Scanner;

public class demo1 {
	public static void main(String[] args) {
		String name;
		float score;
		String ans;
		do{
		    float sum = 0;
			System.out.println("请输入学生姓名:");
			Scanner sc = new Scanner(System.in);
			name = sc.next();
			
			System.out.println("请输入5门课程的成绩:");
			for (int courseNum = 1; courseNum <= 5; courseNum++) {
				System.out.println("请输入第" + courseNum + "门课程的成绩:");
				Scanner input = new Scanner(System.in);
				score = input.nextFloat();
				
				sum = sum + score;
			}
			
			System.out.println("这5门课程的总成绩为:" + sum);
			System.out.println("这5门课程的平均分为:" + sum/5);
	
			System.out.println("是否继续?[Y/N]");
			Scanner get = new Scanner(System.in);
			ans = get.next();
			
		}while("Y".equals(ans));
	}
}

          

练习8:求1+2!+3!+...+20!的和。

练习9:从控制台输入三个整数x,y,z,请把这三个数由小到大输出。

猜你喜欢

转载自blog.csdn.net/weixin_42526141/article/details/82757675