JavaSE:程序逻辑控制

程序逻辑控制

顺序结构

简单的说,我们通常写的代码就是顺序结构,程序执行时按照我们书写的顺序一行一行执行。如果改变我们代码的书写顺序,则执行顺序也会改变。

System.out.println("1111");
System.out.println("2222");
System.out.println("3333");

在这里插入图片描述

改变一下代码的书写顺序

System.out.println("1111");
System.out.println("3333");
System.out.println("2222");

在这里插入图片描述

分支结构

if语句

语法形式1:

if(布尔表达式) {
	//条件满足执行的代码
}    

语法形式2:

if(布尔表达式) {
	//条件满足执行的代码
}else {
	//条件不满足执行的代码
}

**语法形式3:**多分支形式

if(布尔表达式){
	//条件满足时执行代码
}else if(布尔表达式){
	//条件满足时执行代码
}else{
	//条件都不满足时执行代码
}

Java中的语法格式与C语言基本相同,这里不在过多赘述,唯一不同的是if()中的判断条件只能是布尔表达式,不存在1为true,0位false的情况

写个例子结束我们的if语句

int year = 1996;
        if ((year%4==0&&year%100!=0)||year%400==0)
        {
            System.out.println(year+"是闰年");
        } else {
            System.out.println(year+"不是闰年");
        }

switch语句

基本语法

switch(整数|枚举|字符|字符串){
	case 内容1 : {
		内容满足时执行语句;
		[break;]
	}
	case 内容2 : {
		内容满足时执行语句;
		[break;]
	}
...
	default:{
		内容都不满足时执行语句;
		[break;]
	}
}

具体的语法不在赘述,与C语言基本相同,这里仅给出一些重点的注意事项

注意:

  • 根据switch中值的不同,会执行对应的case语句,遇到break就会结束该case语句
  • 如果switch中的值没有匹配的case,就会执行default中的语句,建议一个switch语句最好都要带上default
  • break 不要遗漏,不写break的时候,case语句会依次向下执行, 从而失去了多分支的效果
  • switch 中的值只能是 整数|枚举|字符|字符串

循环结构

while循环

基本语法

while(布尔表达式) {
	//循环语句;
}

循环条件为true,则执行循环语句,否则结束循环

注意:

  • while下面的语句可以不写{ }, 但是不写的时候只能支持一条语句,建议还是加上{ },while 后面不要多写 分号, 否则可能导致循环不能正确执行

break

break的功能是让循环提前结束

举个例子体会:

int num = 100;
while (num <= 200) {
	if (num % 3 == 0) {
		System.out.println("找到了 3 的倍数, 为:" + num);
		break;
	}
	num++;
}

在这里插入图片描述

continue

continue的功能是跳过这次循环,立即进入下次循环

举个例子体会:找到 100 - 200 中所有 3 的倍数

int num = 100;
while (num <= 200) {
	if (num % 3 != 0) {
		num++; // 这里的 ++ 不要忘记! 否则会死循环.
		continue;
	}
	System.out.println("找到了 3 的倍数, 为:" + num);
	num++;
}

执行到continue语句的时候,就会立刻进入下次循环(判定循环条件),从而不会执行到下方的打印语句

for循环

基本语法

for(表达式1;布尔表达式2;表达式3) {
	//循环体;
}

表达式1: 用于初始化循环变量.
布尔表达式2: 循环条件
表达式3: 更新循环变量.

例子:计算1~100的和

int sum = 0;
for (int i = 1; i <= 100; i++) {
	sum += i;
}
System.out.println("sum = " + sum);

与if类似,for下面的语句可以不写{ },但是不写的时候只能支持一条语句,建议还是加上{ },for 后面不要多写分号,否则可能导致循环不能正确执行

do while循环

基本语法

do{
循环语句;
}while(循环条件);

先执行循环语句,再判定循环条件,do while 循环最后的分号不要忘记,一般 do while很少用到,更推荐使用for和while

输入输出

输出到控制台

System.out.println(msg); // 输出一个字符串,并且换行
System.out.print(msg); // 输出一个字符串,不换行
System.out.printf(format, msg); // 格式化输出,与C语言printf()用法基本一致

从键盘输入

import java.util.Scanner;

如同C语言使用printf()和scanf()之前需要包含头文件(#include<stdio.h>),Java从键盘输入时也需要类似的东西,我们称之为包(package),导入方法如上代码所示

以下是使用 Scanner 读取字符串/整数/浮点数的方法,具体的原理我们先不细说,大家可以先按照格式去使用,等我们学习了类与对象之后便可明白这样做的原理。

 Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("姓名:"+name+"年龄:"+age+"工资:"+salary);

在这里插入图片描述

注意

1.在读取数字和字符时,要先读取字符,后读取数字

//先读字符串
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
System.out.println(name);
int age = sc.nextInt();
System.out.println(age);

在这里插入图片描述

//先读数字
Scanner sc = new Scanner(System.in);
int age = sc.nextInt();
System.out.println(age);
String name = sc.nextLine();
System.out.println(name);

在这里插入图片描述

我们可以发现,我们仅仅输入数字后,程序就结束了,为什么呢?

因为我们在输入数字时敲下的回车(\n)被当成字符串被读取了,所以在输出字符串时输出了一个换行符,让我们看起来读取字符串和输出字符串的操作是失效的,所以我们今后要尽量注意去避免这种情况。

2.优先使用nextLine()去读取字符串

next():对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。

nextLine():结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
System.out.println(name);
String name1 = sc.next();
System.out.println(name1);

在这里插入图片描述

3.循环读入

Scanner sc = new Scanner(System.in);
double sum = 0.0;
int num = 0;
while (sc.hasNextDouble()) {
       double tmp = sc.nextDouble();
       sum += tmp;
       num++;
}
System.out.println("sum = " + sum);
System.out.println("avg = " + sum / num);

在这里插入图片描述

hasnextInt(),hasnext()等都可以循环读入,需要注意的是,当我们需要结束循环读入时,使用ctrl + D来结束输入(Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl +d,IDEA使用Ctrl+d )

这篇文章主要是对我们所熟悉的分支循环等结构的简单回顾和复习,并且对Java中的输入输出进行了较为详细的介绍,但因为我们对Java掌握内容太少,一些操作的原理我们也暂未详细讲解,但相信随着我们之后的学习,我们一定会重新掌握那些未深入讲解的东西,同时,由于笔者水平有限,文章可能出现一些错误,希望大家可以多多批评指正!在这里插入图片描述

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值