狂神Java SE (四)流程控制
2021/7/10 22:05:54
本文主要是介绍狂神Java SE (四)流程控制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
01 用户交互 Scanner
java.util.Scanner
Java5的新特性,可以通过Scanner
类获取用户的输入。
Scanner s = new Scanner(System.in);
- 通过
Scanner
类的next()
与nextLine()
方法获取输入的字符串 - 在读取之前一般需要使用
hasNext()
或hasNextLine()
判断是否还有输入的数据。 - 属于IO流的类如果不关闭会一直占用资源,要在用完后及时关掉
scanner.close()
next()
- 要读取到有效字符后才能结束输入
- 对输入有效字符之前遇到的空白,会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
next()
不能得到带有空格的字符串
nextLine()
- 以Enter作为结束符,返回的是输入回车之前的所有字符
- 可以获得空白
02 Scanner 进阶使用
scanner
还有一些其他的方法可以判断输入的是否是特定格式的数据,如hasNextInt()
,hasNextFloat()
等,然后使用对应的nextInt()
, nextFloat()
获取。
package com.kuang.base; import java.util.Scanner; /** * 输入多个数字求和、求平均值,输入的数字用回车确认,输入非数字结束输入并输出结果。 * * @author maple_w * Created on 21/07/10 010 18:00 */ public class Demo04_scanner_test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); double sum = 0; int num = 0; // 通过循环判断是否还有输入,并在循环中对每次输入进行求和、统计 while (scanner.hasNextDouble()) { double x = scanner.nextDouble(); num++; sum = sum + x; System.out.println("输入了第" + num + "个数据,当前结果sum = " + sum); } System.out.println(num + "个数字的和为: " + sum); System.out.println(num + "个数字的平均值为: " + (sum / num)); scanner.close(); } }
03 顺序结构
- Java基本结构,如无特殊指明,按照顺序一句一句执行。
- 是任何一个算法都离不开的一种基本算法结构。
04 if 选择结构
- if 单选择结构
- if 双选择结构
- if 多选择结构
if(){} else if(){} else{}
- 嵌套的 if 结构
05 switch 选择结构
switch case default
语句判断一个变量与一系列值中某个值是否相等,每个值成为一个分支。switch
语句中的变量类型可以是:- byte、short、 int、 char
- String类型 (Java 7开始支持)
case标签必须为字符串常量或字面量。
通过反编译可以看到,case
比较的是字符串的hashCode()
。
- 注意
case
穿透问题(break
的使用)
package com.kuang.base; /** * JDK7中新增switch判断string特性 * * @author maple_w * Created on 21/07/10 010 18:23 */ public class Demo06_switch { public static void main(String[] args) { String flag = "hello"; switch (flag){ case "hello": System.out.println("hello"); break; case "world": System.out.println("world"); break; default: System.out.println("error"); } } }
反编译class
文件:
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.kuang.base; public class Demo06_switch { public Demo06_switch() { } public static void main(String[] args) { String flag = "hello"; byte var3 = -1; switch(flag.hashCode()) { case 99162322: if (flag.equals("hello")) { var3 = 0; } break; case 113318802: if (flag.equals("world")) { var3 = 1; } } switch(var3) { case 0: System.out.println("hello"); break; case 1: System.out.println("world"); break; default: System.out.println("error"); } } }
06 while 循环详解
while(布尔表达式){ // 循环内容 }
- 只要布尔表达式为
true
,循环就会一直执行下去 - 少数情况需要循环一直执行,如服务器的请求响应监听等
07 do while 循环
do { // 代码语句 } while(布尔表达式);
do while
循环至少会执行一次do while
先执行,后判断
08 for 循环详解
for (初始化; 布尔表达式; 更新){ // 代码语句 }
- for循环是支持迭代的一种通用结构,是最有效、最灵活的循环结构
- for循环执行的次数在执行前就已经确定了
09 打印九九乘法表
package com.kuang.base; /** * 使用for循环打印九九乘法表 * 1*1=1 * 2*1=2 2*2=4 * 3*1=3 3*2=6 3*3=9 * 4*1=4 4*2=8 4*3=12 4*4=16 * 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 * 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 * 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 * 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 * 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 * * @author maple_w * Created on 21/07/10 010 21:23 */ public class Demo08_for { public static void main(String[] args) { for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { System.out.print(i + "*" + j + "=" + i * j + "\t"); } System.out.println(); } } }
10 增强 for 循环
- Java5 引入的用于数组或集合的增强for循环
for (声明语句 : 表达式){ // 代码语句 }
- 声明语句:声明新的局部变量,该变量的类型必须与数组元素的类型匹配。其作用域限定在循环语句块,其值与此事数组元素的值相等。
- 表达式:要访问的数组名,或返回值为数组的方法。
11 break、continue、goto
- break在任何循环语句的主体部分,均可以控制循环流程。用于强行退出循环,不执行循环中剩余的语句(也可以在switch语句中使用)。
- continue语句在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,截止进行下一次是否执行循环的判定。
- goto 是保留字,但并未正式使用。称为标签,表示为
标签名:
12 打印三角形及debug
package com.kuang.base; /** * 打印三角形 * * @author maple_w * Created on 21/07/10 010 21:51 */ public class Demo09_printTriangle { public static void main(String[] args) { for (int i = 1; i <= 5; i++) { // 先打印空格 for (int j = 5; j >= i; j--) { System.out.print(" "); } // 打印左侧 for (int j = 1; j <= i; j++) { System.out.print("*"); } // 打印右侧 for (int j = 1; j < i; j++) { System.out.print("*"); } System.out.println(); } } }
这篇关于狂神Java SE (四)流程控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南