一、顺序结构
在Java语法中,顺序结构是一种基本的程序控制结构,用于按照代码的编写顺序依次执行语句。
顺序结构没有条件或循环的判断,它的执行是线性的,从上到下依次执行每条语句。
代码示例:
public static void main(String[] args) {
// 第一条语句
System.out.println("这是第一条语句。");
// 第二条语句
System.out.println("这是第二条语句。");
// 第三条语句
System.out.println("这是第三条语句。");
// ... 其他语句
// 最后一条语句
System.out.println("这是最后一条语句。");
}
效果图:
二、分支结构
2.1 if 语句
在Java语法中,if语句是一种条件控制语句,用于根据一个布尔表达式的值(true或false)来执行不同的代码分支。
以下是 if 语句的几种常见语法格式:
- 语法格式1:单个if语句
if (condition) {
// 如果条件成立,执行的代码块
}
- condition 是一个布尔表达式,它的值为true或false。
这是最基本的 if 语句格式,只包含一个 if 条件和一个执行代码块。如果条件满足(即为true),则执行代码块中的语句。
- 语法格式2 :if-else语句
if (condition) {
// 如果条件成立,执行的代码块
} else {
// 如果条件不成立,执行的代码块
}
if-else语句包含一个 if 条件和两个执行代码块,当条件满足时执行 if 代码块,否则执行 else 代码块。
代码示例1:判断奇偶数
在IDEA中,代码有时会显示黄色的背景,这代表警告。
表示该区域的代码永远为 false,
代码中有个别警告没有关系。
public static void main (String[]args){
int a = 10;
if (a % 2 != 0) {//黄色背景说明是警告(代码中有个别警告没有关系),表示永远为false。
System.out.println("奇数!");
} else {
System.out.println("偶数!");
}
}
效果图:
- 语法格式3:if-else if-else语句(多重条件)
if (condition1) {
// 如果条件1成立,执行的代码块
} else if (condition2) {
// 如果条件2成立,执行的代码块
} else {
// 上述条件均不成立时,执行的代码块
}
if-else if-else语句用于处理多个条件情况,可以根据不同的条件执行相应的代码块。条件会按顺序依次判断,当某个条件成立时,执行对应的代码块。如果所有条件都不成立,则执行最后的 else 代码块。
代码示例2:使用if语句来检查一个数值变量的正负性
public static void main(String[] args) {
int num = -1;
if (num > 0) { // 检查num是否大于0
System.out.println(num + "是正数。");
} else if (num < 0) { // 如果num小于0
System.out.println(num + "是负数。");
} else { // 如果num等于0
System.out.println(num + "不是正数也不是负数。");
}
}
效果图:
- 语法格式4:嵌套 if 语句
if (condition1) {
// 外层if代码块
if (condition2) {
// 内层if代码块
}
}
在Java中,if语句可以嵌套使用。内层if语句的条件判断是在外层if语句的条件判断为true的情况下才会执行。可以根据实际需要嵌套多个if语句。
代码示例3:判断是否为偶数
public static void main(String[] args) {
int num = 8;
if (num % 2 == 0) { // 如果num可以被2整除
if (num > 0) { // 如果num大于0
System.out.println(num + "是正偶数。");
} else if (num < 0) { // 如果num小于0
System.out.println(num + "是负偶数。");
} else { // 如果num等于0
System.out.println(num + "是偶数。");
}
} else { // 如果num不能被2整除
System.out.println(num + "不是偶数。");
}
}
效果图:
[注意事项]:
- 分号问题
public static void main(String[] args) {
int num = 1;
if (num == 2);
{
System.out.println("Hello");
}
}
效果图:
- 这里的 if 语句,多写了一个 分号,导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块。
2.2 switch 语句
switch语句由一个表达式和多个case分支组成。
语法格式:
switch (表达式) {
case 值1:
// 当表达式的值等于值1时执行的代码
break;
case 值2:
// 当表达式的值等于值2时执行的代码
break;
case 值3:
// 当表达式的值等于值3时执行的代码
break;
// 可以有更多的case分支
default:
// 当表达式的值不匹配任何case时执行的代码
}
//switch语句后面的代码
在switch语句中,break语句的作用是结束当前的case条件分支,并跳出switch语句,使程序执行流程继续到switch语句后面的代码。
流程:
- 先计算表达式的值
- 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
- 当表达式的值没有与所列项匹配时,执行default
代码示例:根据day输出星期
public static void main(String[] args) {
int day = 8;
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("无效的输入");
}
}
效果图:
注意事项:
- break和default都不能省略
- 不能有两个相同的case常量值
- switch的括号内只能是如下类型的表达式:
基本类型:byte、char、short、int,注意不能是long类型
引用类型:String常量串、枚举类型 (不能做switch的参数的数据类型: long double float boolean)
三、循环结构
3.1 while 循环
while循环是Java中的一种基本的循环结构,它的作用是在满足条件的情况下反复执行一段代码块。
语法格式:
while (条件) {
// 循环体
}
其中条件是一个布尔表达式,表示循环的条件。
如果条件为真,则执行循环体,然后再次检查条件是否为真;
如果条件为假,则终止循环,跳出while语句。
代码示例1:输出1-10之间的所有整数
public static void main (String[]args){
int num = 1;
while (num <= 10) {
System.out.println(num);
num++;
}
}
效果图:
代码示例2:计算 1-100 的和
public static void main (String[]args){
int sum = 0; // 初始化和为0
int i = 1; // 循环变量起始值为1
while (i <= 100) {
sum += i; // 将当前数加到sum中,相当于 sum = sum + i
i++; // 循环变量自增
}
System.out.println("1到100的和为:" + sum);
}
效果图:
代码示例3: 计算 4 的阶乘
public static void main (String[]args){
int i = 1;
int ret = 1;
while (i <= 4) {
ret *= i;
i++;
}
System.out.println(ret);
}
效果图:
注意事项:
- while()后面不能加分号(;)
public static void main(String[] args) {
int num = 1;
while (num <= 10); {
System.out.println(num);
num++;
}
}
如果加上分号,代码会一直处于运行状态,但无任何输出结果。
while 是一个空语句,实际的 { } 部分和循环无关。
此时循环条件 num <= 10 恒成立, 导致代码死循环,代码会一直运行而不会运行{}中的内容。
3.2 break
break语句在Java中用于提前结束循环。
代码示例:找到 50 -100 中第一个 6 的倍数
public static void main(String[] args) {
int num = 50;
while (num <= 100) {
if (num % 6 == 0) {
System.out.println("找到 6 的倍数:" + num);
break;//执行到break语句,结束循环。
}
num++;
}
}
输出结果:
找到 6 的倍数:54
3.3 continue
在Java中,continue语句用于跳过当前循环中剩余的代码,直接开始下一次循环。
代码示例:
public static void main(String[] args) {
int a = 1;
while (a <= 6) {
if (a == 2) {
a++; //这里也记得a++ 否则会死循环
continue;//结束下面的循环 执行下一次循环
}
System.out.println(a);
a++;
}
}
效果图:
3.4 for 循环
语法格式:
for (1.初始化;2.判断条件;4.更新操作) {
3.循环体
}
-
1.初始化:在循环开始之前执行,用于声明和初始化循环变量初始值,只执行一次。
-
2.判断条件:在每次迭代之前进行判断,如果条件成立,则继续执行循环体,否则跳出循环。
-
3.循环体:循环体中包含要执行的代码块或语句,它们将被循环执行。
-
4.更新操作:在每次迭代之后执行,用于更新循环变量的值。
执行过程:
1234—>234—>234—>234—>234—>234—>…—>2为false,循环结束。
除却1只执行一次以外,其余在2为true时都执行多次。
代码示例1:输出1-10之间的所有整数
public static void main(String[] args) {
for (int i = 1; i <= 10 ; i++) {
System.out.println(i);
}
}
效果图:
代码示例2:计算 1-100 的和
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100 ; i++) {
sum += i;
}
System.out.println("sum = "+ sum);
}
效果图:
代码示例3: 计算 4 的阶乘
public static void main(String[] args) {
int ret = 1;
for (int i = 1; i <= 4; i++) {
ret *= i;
}
System.out.println("ret = "+ ret);
}
效果图:
注意事项:
- 如果for语句中什么都不写,就会进入死循环。
public static void main(String[] args) {
int sum = 0;
for (; ; ) {//死循环
System.out.println("sum = "+ sum);
}
}
效果图:这里就会一直运行,不会停止。
3.5 do while 循环
先执行循环语句, 再判定循环条件,如果循环条件为真,则继续执行循环体,否则结束循环。
语法格式:
do {
// 循环体
} while (循环条件);//这里的分号一定要
代码示例:打印 0 - 5
public static void main(String[] args) {
int i = 0;//先行后判
do {
System.out.println(i);
i++;
} while (i <= 5);
}
效果图:
注意: do while 循环最后的分号一定要写。
四、输入输出
4.1 输出到控制台
代码示例:
public static void main(String[] args) {
System.out.println("输出且换行");
System.out.print("输出且不换行 ");
System.out.printf("%s\n", "格式化输出,和C语言一样。");//%s表示以字符串类型输出
}
效果图:
从图中可见,第一行代码自动换行了;而第二行代码没有换行,导致第三行代码与第二行代码处于同一行。
- println 输出的内容自带 \n
- print 不带 \n
- printf 的格式化输出方式和 C 语言的 printf 是基本一致的
4.2 从键盘上输入
在Java中,从键盘上输入可以使用Scanner类来实现。
代码示例:
import java.util.Scanner; // 需要导入 util 包
这只写一次,下面的代码默认都导入了包
一般情况下IEDA都会自动为我们导入包
如果没有导入,需要手动输入代码导入
public class Test {
public static void main(String[] args) {
// 创建 Scanner 对象
Scanner scanner = new Scanner(System.in);
// 读取字符串
System.out.print("请输入一个字符串:");
String str = scanner.nextLine();//读取用户输入的字符串
System.out.println("你输入的字符串是:" + str);
// 读取整数
System.out.print("请输入一个整数:");
int num = scanner.nextInt();//读取用户输入的整数
System.out.println("你输入的整数是:" + num);
// 关闭 Scanner 对象
scanner.close();
}
}
效果图:
在上面的代码中,我们首先创建了一个 Scanner 对象并传入 System.in 来获取用户从键盘中输入的值。
然后使用 nextLine() 方法读取字符串。使用 nextInt() 方法读取整数。最后,用 .close() 关闭 Scanner 对象以释放资源。
4.2.1 next() 和 nextLine()
在 Java 中,Scanner 类提供了两种方法:next() 和 nextLine() 用于读取用户输入的字符串。
- next() 方法:读取输入的一个单词,当遇到空格时,next() 方法会停止读取输入。
- nextLine()方法:读取整行输入,直到遇到换行符为止。
代码示例1:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名:");
String name = scanner.next();//next遇到空格就结束了,与nextLine()不同
System.out.println(name);
String name2 = scanner.next();//读取了空格后的字符串
System.out.println(name2);
效果图:
第二个输入代码读取了空格后面的李四,第一个读取代码被张三后面的空格结束了。
代码示例2:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = scanner.nextInt();
System.out.println(age);
System.out.println("请输入姓名:");
//此时,上面输完之后输入的 回车 会被下面读取到
//就导致下面的nextLine()无法输入
String name = scanner.nextLine();
System.out.println(name);
效果图:
解决方法:
在第一个输入后面加一行 scanner.nextLine(); 接收一个回车键,这样下面的输入就不会接收到回车键了。
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = scanner.nextInt();
System.out.println(age);
scanner.nextLine(); //接收一个回车键
System.out.println("请输入姓名:");
//此时,上面输完之后输入的 回车 会被下面读取到
//就导致下面的nextLine()无法输入
String name = scanner.nextLine();
System.out.println(name);
效果图:
4.2.2 hasNextInt()
代码示例:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
while (scanner.hasNextInt()) {//表示是否有下一个数,有输入就执行
System.out.println("请输入一个整数:");
int n = scanner.nextInt();
System.out.println("n = " + n); //ctrl+D 结束循环
}
效果图:
从代码中不难看出hasNextInt()是一个返回值为布尔类型的方法。
这个时候为了证明我们的猜想,可以按住键盘上左下角 ctrl + 单击,可以查看源代码。
源代码界面:
在学习过程中我们也需要看得懂部分源代码,方便我们更好的理解和学习java。
小提示:
在IDEA中,如果代码数量过多,想要查看前面的代码,来写后面的代码时。
一直滚动鼠标会很费时间,不方便。
这时候就可以利用到一个开多窗口的功能,实现下面的效果:
实现方法:
- 右键点击我们自己的.java文件。
- 单击Split Right
这里以我的Test .java为例文章来源:https://www.toymoban.com/news/detail-744864.html
当然,开2个以上的窗口也是相同的操作方法。文章来源地址https://www.toymoban.com/news/detail-744864.html
到了这里,关于Java-逻辑控制语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!