Java基础篇_06 逻辑流程控制

main函数、顺序结构

Java虚拟机通过main方法找到需要启动的运行程序,并且检查main函数所在的类是否被Java虚拟机装载。如果没有装载,那么就装在该类,并且装载所有相关的其他类。因此程序运行的时候,第一个执行的方法就是main()方法

public class Main {
	public static void main(String[] args) {
		System.out.println("main方法是Java程序的入口!");
	}
}

顺序结构:自上而下地逐行执行代码

选择结构

选择结构:根据逻辑判断代码的执行顺序
在这里插入图片描述

if

满足判断条件,则执行相对应的代码,否则不执行任何代码。

	public static void main(String[] args) {
		if (true) {
			System.out.println("语句1");
			System.out.println("语句2");
			System.out.println("语句3");
		}
		System.out.println("语句4");
	}

结果:
在这里插入图片描述
当条件为false时,结果只有“语句4”输出。

if-else

当条件为true时,执行if中的代码,否则执行else中的代码。

	public static void main(String[] args) {
		int a = 1;
		if (a == 1) {//当代码块中的语句只有1条时,可以省略 {}
			System.out.println("a 等于 1");
		}else {
			System.out.println("a 不等于 1");
		}
	}

if-else多级嵌套

	public static void main(String[] args) {
		double score = 99;
		if (score < 60) {
			System.out.println("不及格!");
		} else if (score >= 60 && score < 80) {
			System.out.println("及格!");
		} else if (score >= 80 && score < 90) {
			System.out.println("良好!");
		} else {
			System.out.println("优秀!");
		}
	}

switch 多分支选择

在这里插入图片描述
例1:

	public static void main(String[] args) {
		int n = 4;
		switch (n) {
		case 1: //变量n与case的值匹配,若匹配成功,则执行case中的代码
			System.out.println("执行了1");
			break; //break会跳出当前switch的作用域。
		case 2:
			System.out.println("执行了2");
			break;
		default:
			System.out.println("执行了default");
		}
	}

这里先介绍一个对象Scanner,它是一个用于输入的类,之前的System.out是用来输出的对象。它的参数是System.in,是输入的对象。Scanner常用方法有:
int nextInt(), double nextDouble() 分别用来读取输入整型和浮点型数据;
nextLine() 是读取输入下一整行内容,next()是读取输入下一个单词(遇到空格结束),它们都是String类型的;
但是对于char字符类型并没有扫描输入的方法,所以输入字符串类型,给转成char类型,具体方法为next().charAt(0)

当我们需要想要执行的条件有多个的时候,不能用逻辑运算符 ||,应该怎么写呢?

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入:");
		char c = sc.next().charAt(0);
		switch (c) {
		case 'a':
		case 'A':
			System.out.println("您输入了选项A");
			break;
		case 'b':
		case 'B':
			System.out.println("您输入了选项B");
			break;
		default:
			System.out.println("您输入了个寂寞!");
		}
	}

与if-else比较,switch-case的优点在于,可以利用switch的开关功能来实现批处理,增加了代码的可读性,使代码更容易编写,性能更高。缺点是不能嵌套循环。

循环结构

while循环

在这里插入图片描述
格式:while(条件){ 循环体}

编写程序,计算1+2+3+…+100的值。

	public static void main(String[] args) {
		int i = 1;
		int sum = 0;
		while (i <= 100) {// 执行到while循环时,当()中的条件为true时,就执行循环体中的代码
			sum += i;
			i++;
		}
		System.out.println("1+2+3+…+100的值为" + sum);
	}

do-while循环

在这里插入图片描述
格式:do{ 循环体}while(条件)

	public static void main(String[] args) {
		int i = 1;
		int sum = 0;
		do {
			sum += i++;
		} while (i <= 100);
		System.out.println("1+2+3+…+100的值为" + sum);
	}

while是先判断,后执行;do-while是先执行,后判断。

for循环

for循环主要用于按预定的次数执行语句或语句块。
在这里插入图片描述

	public static void main(String[] args) {
		int sum = 0;
		for (int i = 1; i <= 100; i++) {
			sum += i;
		}
		System.out.println("1+2+3+…+100的值为" + sum);			
	}

循环控制

break

break除了在switch中使用,还可以用于循环体中。
在循环体中遇见break语句时,立即结束循环,跳至循环外,执行循环结构后面的语句。

	public static void main(String[] args) {
		for (int i = 1; i <= 100; i++) {
			if (i == 10) {
				System.out.println("执行到10跳出循环");
				break;
			}
			System.out.println(i);
		}
	}

continue

continue用于结束本次循环,即在循环体中遇见continue语句时,continue后面的语句不会执行,直接进行下一次循环的判定。

	public static void main(String[] args) {
		for (int i = 1; i <= 20; i++) {
			if (i == 10) {
				System.out.println("本次循环结束!");
				continue;
			}
			System.out.println(i);
		}
	}

return

Java中return表示立即跳出当前的方法。

有两个作用:

  1. 返回方法指定类型的值(这个类型是确定的),也可以是对象
  2. 方法的结束

有两种形式:
3. 有返回类型 例如:return i; return 0;
4. 无返回类型 return;

方法前有void代表无返回值,没有void表示有返回值。

若程序中执行遇到return,则携带返回值立即跳出当前的方法,若return在main方法中,则直接结束程序。

public class Test3 {
	public static void main(String[] args) {
		System.out.println("程序开始执行:");
//		returnVoid();
//		int n = returnInt();
//		System.out.println(n);
		String result = returnString(80);
		System.out.println(result);
		System.out.println("程序结束执行!");
	}

	public static void returnVoid() {
		for (int i = 0; i < 100; i++) {
			if (i == 20) {
				System.out.println("跳出了当前方法returnVoid");
				return;
			}
			System.out.println(i);
		}
		System.out.println("这是后面的代码,不再执行");
	}

	/**
	 * 返回一个绝对值
	 * 
	 * @return
	 */
	public static int returnInt() {
		System.out.println("请输入一个整数:");
		int val = new Scanner(System.in).nextInt();
		if (val > 0) {
			return val;
		} else if (val < 0) {
			return -val;
		}
		return 0;
	}

	/**
	 * 判断成绩是否及格
	 * 
	 * @param score
	 * @return
	 */
	public static String returnString(double score) {
		if (score >= 60) {
			return "及格";
		} else {
			return "不及格";
		}
	}
}

嵌套循环控制

循环里面放循环,由于太多循环会导致算法时间复杂度彪高,所以不建议超过3层循环。

	public static void main(String[] args) {
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(j + "x" + i + "=" + i * j + " ");
			}
			System.out.println();
		}
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值