Day_05 【java基础】Java三种基本流程控制(顺序、选择、循环)【附源码】

Java三种基本流程控制

java中存在三总基本结构,分别是顺序结构、选择结构、循环结构

一.顺序结构

顺序结构就是程序依次从上到下一行一行的执行代码,没有判断和中转。

public class StringTest {
	public static void main(String args[]){
		boolean x=true;
		boolean y=false;
		short s=42;
		if((s++==42)&&(y=true)) s++;
		if((x=false)||(++s==45)) s++;
		
		System.out.println("s="+s);
	}
	

}

二.选择结构

判断条件是否满足,选择是否条件条件判断后的执行语句

if条件语句
1.if语句
if(判断条件){
执行语句
}

/*
输出1-150以内的整数,若可以被3整除输出foo
能被5整除输出biz
能被7整除输出baz
同时可以被3,5,7整除输出foo biz baz
 */
public class ForTest {
	public static void main(String args[]) {
		for(int 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();
		}
	}

}

2.if-else语句
if(判断语句){
执行语句1

}else{
执行语句2

}

3.if-else if-else语句
if(判断条件1){
执行语句1

}else{
执行语句2

}
…else if(判断条件n){
执行语句n

}else{
执行语句n+1

}

public class IfTest01 {
	public static void main(String args[]) {
		int score=86;
		if(score<60) {
			System.out.println("没有及格,下次努力!");
		}else if(score>=60 && score<70) {
			System.out.println("刚好及格");
		}else if(score>=70 && score<80) {
			System.out.println("成绩良好");
		}else if(score>=80){
			System.out.println("成绩优秀");
		}
	}
}

switch-case条件语句
switch(控制表达式){
case 目标值1:
执行语句1
break;
case 目标值2:
执行语句2
break;
case 目标值3:
执行语句3
break;

case 目标值n:
执行语句n
break;
default:
执行语句n+1
break;
}
说明:
switch控制表达式的结果类型只能是byte、short、char、int、枚举类型、String类型,而不能是boolean类型;
break不是必须的,可以根据实际情况选择是否书写,若不书写,则从上到下依次满足条件后执行各个case中的执行语句,遇到break结束;
default相当于if-else中的最后的else,当所有条件不成立时,执行default后的语句。
谈谈三元运算符、if-else条件判断、switch-case三个结构的认识。
三元运算符、switch-case可以转换为if-else条件判断,反之未必适用;
当三种结构都可以适用的时候,优先选择三元运算符和switch-case,比较高效;
当分支比较少时优先选择switch-case;
知识扩展:
算法=程序+数据结构

三.循环结构

1.for循环结构:
格式:
for(初始化条件;循环条件(boolean类型);迭代条件){
循环体
}
执行顺序:初始化条件(该步骤只执行一次)—>循环条件—>循环体—>迭代条件—>循环条件—>循环体

//例1:水仙花数:是指一个三位数的个,十,百位对应的三次幂之和等于它本身;例如:153=1*1*1+5*5*5+3*3*3
public class ForTest05 {
	public static void main(String args[]) {
		//输出三位数以内的所有水仙花数
		int ge=0;
		int shi=0;
		int bai=0;
		for(int i=100;i<1000;i++) {
			bai=i/100;
			shi=i%100/10;
			ge=i%100%10;
			if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i) {
				System.out.println(i);
			}
		}
	}

}
//例2:从键盘输入两个数m,n,求最大公约数和最小公倍数
public class ForTest04 {
	public static void main(String args[]) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入第一个数m:");
		int m=sc.nextInt();
		System.out.println("请输入第二个数n:");
		int n=sc.nextInt();
		int min=(m<=n)?n:m;		//求两个数的最小值
		
		for(int i=min;i>=1;i--) {
			if(m%i==0 && n%i==0) {
				System.out.println("最大公约数是:"+i);
				break;		//跳出for循环
			}
		}
		int max=(m>=n)?m:n;		//求两个数的最大值
		for(int i=max;i<=m*n;i++) {
			if(i%m==0 && i%n==0) {
				System.out.println("最小公倍数是:"+i);
				break;		//跳出for循环
			}
		}
	}

}

嵌套循环:
将一个循环嵌套在另一个循环体中,嵌套在内部的循环称为内循环,在外部的循环称为外循环,循环可以嵌套多层,不止于两层。

public class ForTest07 {
	public static void main(String args[]) {
		//输出1000以内的质数
		for(int i=2;i<=1000;i++) {
			boolean flag=true;
			for(int j=2;j<Math.sqrt(i);j++) {
				if(i%j==0) {
					flag=false;
					break;
				}
			}
			if(flag==true) {
				System.out.println(i);
			}
		}
	}
}
public class WanShuTest {
	public static void main(String[] args) {
		//求1000以内的完数
		for(int i=1;i<1000;i++) {
			int num=0;
			for(int j=1;j<=i/2;j++) {
				if(i%j==0) {
					num+=j;
				}
			}
			if(num==i) {
				System.out.print(num+"	");
			}
		}
	}
}

2.while循环
格式:
while(循环条件){
执行语句

}

public class ForWhileTest {
	public static void main(String args[]) {
		//从键盘输入不确定的多个整数,当输入0时结束,统计正数和负数的个数
		Scanner sc=new Scanner(System.in);
		int positivenumber=0;
		int negativenumber=0;
		System.out.println("请输入:");
		//判断输入数字的正负
		while(true) {
			int x=sc.nextInt();
			if(x<0) {
				negativenumber++;
			}else if(x>0) {
				positivenumber++;
			}else {
				break;		//当输入0时,退出while循环,不再输入
			}
			
		}
		System.out.println("正数个数是"+positivenumber+",负数个数是"+negativenumber);
	}

}

3.do-while循环
格式:
do{
执行语句

}while(循环条件);
注意:
do-while循环不管条件是否成立,都会执行一次。
4.循环结构中的break和continue关键字举例说明:
break默认结束距离它最近的一层循环结构,continue默认退出距离它最近的当次循环,此外可以指定需要退出的外层循环;

public class ForTest06 {
	public static void main(String args[]) {
		outer:for(int i=1;i<=10;i++) {
			for(int j=1;j<=i;j++) {
				System.out.print("*");
				if(j==4) {
					break outer;
					//continue outer;
				}
			}
			System.out.println();
		}
	}

}

在这里插入图片描述

public class ForTest06 {
	public static void main(String args[]) {
		outer:for(int i=1;i<=10;i++) {
			for(int j=1;j<=i;j++) {
				System.out.print("*");
				if(j==4) {
					//break outer;
					continue outer;
				}
			}
			System.out.println();
		}
	}

}

在这里插入图片描述

public class ForTest08 {
	public static void main(String args[]) {
		//break和continue测试
		int number=15;
		for(int i=1;i<number;i++) {
			if(i%5==0) {
				//continue;		//结束当次循环,后面不可在写语句
				break;			//结束当前循环,后面不可再写语句
			}
			System.out.print(i+" ");
		}
	}
}

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

public class ForTest08 {
	public static void main(String args[]) {
		//break和continue测试
		int number=15;
		for(int i=1;i<number;i++) {
			if(i%5==0) {
				continue;		//结束当次循环,后面不可再写语句
				//break;			//结束当前循环,后面不可再写语句
			}
			System.out.print(i+" ");
		}
	}
}

在这里插入图片描述
关于Scanner的补充说明:
Scanner类是java内部的类,定义在jav.util包中,用于从键盘输入,使用时只需要引入对应的Scanner类后,声明一个Scanner对象即可以使用。
例如:

import java.util.Scanner;		//引入Scanner类
Scanner sc = new Scanner(System.in);		//声明Scanner对象
int num = sc.nectInt();		//输入变量num
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智商三岁半i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值