Java流程控制
2021/7/30 1:06:04
本文主要是介绍Java流程控制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
用户交互Scanner
Scanner对象
Java有一个工具类可以让我们获取用户输入,java.util.Scanner是java5的新特性。我们可以通过Scanner类来获取用户的输入。
基本语法:
Scanner s = new Scanner(System.in); //创建一个Scanner对象
-
通过 Scanner类的 next()与 nextLine()方法获取输入的字符串,在读取前我们一般需要使用 hasNext()与 hasNextLine()判断是否还有输入的数据。
-
next()
-
- 需要读取到用户输入,程序才能继续跑下去
- 遇到有效字符前的空白,next()方法会把它们丢弃
- 遇到有效字符后的空白是 next()方法的结束符,所以只能读取一个单词。
-
-
nextLine()
-
- 以Enter键作为结束符,即nextLine()方法返回的是输入回车之前的所有字符。
- 可以读取空白字符。
-
顺序结构
- Java的基本结构就是顺序结构,除非特别说明,否则程序就是按顺序一句一句执行。
- 顺序结构是最简单的算法结构。
- 顺序结构是任何一个算法都离不开的一种基本算法结构。
选择结构
- if单选择结构
- if-else双选择结构
- if-else if-else多选择结构
- 嵌套的if结构
- switch多选择结构
if单选择结构
判断一个条件是否正确,正确的话就去执行,我们需要一个 if语句实现。
- 语法
if (判断条件) { // 如果条件为true就执行结构体语句 }
package com.hongcheng.struct; import java.util.Scanner; public class If1 { public static void main(String[] args) { //选择结构 //if单选择结构 Scanner scanner = new Scanner(System.in); System.out.println("请输入内容:"); String s = scanner.nextLine(); //equals:判断字符串是否相等 if (s.equals("hello")) { System.out.println(s); } System.out.println("End"); scanner.close(); } }
if双选择结构 if-else
现在我们公司需要做一款游戏,如果做出来了,我们晚上出去庆功,但如果失败了,那我们就去把别人公司的游戏收购了。hahaha!
这时候我们就需要一个双选择结构 if else,一个单if选择结构已经不能满足我们的需求了。
- 语法
if (判断条件) { // 如果条件为true } else { // 如果条件为false }
package com.hongcheng.struct; import java.util.Scanner; public class If2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // if双选择结构 if else // 现在我们公司需要做一款游戏,如果做出来了,我们晚上出去庆功, // 但如果失败了,那我们就去把别人公司的游戏收购了。hahaha! System.out.println("游戏开发是否成功?1表示成功;2表示失败"); int k = scanner.nextInt(); if (k == 1) { System.out.println("成功,晚上出去庆功!"); } else { System.out.println("只能用钱去收购TX了!哈哈哈"); } scanner.close(); } }
if多选择结构 if-else if-else
有时候我们不只要收购TX一个公司,可能还要收购暴雪的游戏,也许还有阿里巴巴。
- 语法
if (判断条件1) { // 如果条件1为true } else if (判断条件2) { // 如果条件2为true } else if (判断条件3) { // 如果条件3为true } else { // 如果条件3为false }
package com.hongcheng.struct; import java.util.Scanner; public class If3 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // if多选择结构 if else if else /* if语句最多有1个 else语句,else语句在最后 if语句可以有多个 else if 语句,他们必须在 else语句之前 一旦其中一个 else if语句为真,其他的 else if和 else语句都会跳过 */ System.out.println("请输入成绩:"); int score = scanner.nextInt(); if (score == 100) { System.out.println("恭喜满分"); } else if (score < 100 && score >= 90) { System.out.println("A级"); } else if (score < 90 && score >= 80) { System.out.println("B级"); } else if (score < 80 && score >= 70) { System.out.println("C级"); } else if (score < 70 && score >= 60) { System.out.println("D级"); } else if (score < 60 && score >= 0) { System.out.println("不及格"); } else { System.out.println("成绩不合法"); } scanner.close(); } }
嵌套的if结构
-
可以使用嵌套的if...else 语句,有个 if else语句里面可以再嵌套多个if else。
-
语法
if (判断条件1) { //如果条件1为true if (判断条件2) { //如果条件2为true } }
switch多选择结构
多选择结构也可以使用 switch语句实现。
-
switch case语句判断一个变量和一些值中的某个值是否相等,每个值叫做一个分支。
-
switch语句的变量类型可以是:byte、short、int、char
-
从JDK7开始,switch可以用字符串String类型作为变量类型
-
case标签必须是字符串常量或字面量
语法格式:
switch (expression) { case value: //语句 break; //可选,但最好使用 case value: //语句 break; default: //语句 }
package com.hongcheng.struct; public class Switch1 { public static void main(String[] args) { //case穿透 //switch的本质是匹配一个值 char grade = 'C'; switch (grade) { case 'A': System.out.println("优秀"); break; case 'B': System.out.println("良好"); break; case 'C': System.out.println("及格"); break; case 'D': System.out.println("挂科"); break; default: System.out.println("非法数据"); } } }
反编译
从.class字节码反编译回.java文件,通过IDEA可以实现这种操作。
- 具体步骤
- 找到字节码输出文件夹
- 把字节码文件复制到.java文件夹
- 使用IDEA打开工程目录下的字节码文件即可
通过比较对象的hashCode来匹配标签,hashCode可以认为是唯一的。
package com.hongcheng.struct; public class Switch2 { public static void main(String[] args) { String name = "布鲁斯韦恩"; /* JDK7的新特性,可以用String类型作为 switch变量类型 字符的本质还是数字 */ //反编译 (编译)java--->class(字节码文件)--->java(反编译IDEA) switch (name) { case "迪丽热巴": System.out.println("迪丽热巴"); break; case "古力娜扎": System.out.println("古力娜扎"); break; case "布鲁斯韦恩": System.out.println("布鲁斯韦恩"); break; default: System.out.println("杨超越"); } } }
while循环
while循环是最基本的循环,它的结构是:
while (conditon) { //循环语句 }
- 只要判断条件为true,循环就会一直进行下去。
- 我们一般情况是想让循环停下来,所以需要一个让判断条件失效的情况结束循环。
- 只有少部分情况才需要循环一直执行,比如服务器监听客户端请求等......
- 判断条件一直为true会无限循环,也叫死循环,我们编程的时候应该尽量避免写死循环,死循环会影响程序性能或造成程序崩溃。
package com.hongcheng.struct; public class While1 { public static void main(String[] args) { //输出1~100 int i = 0; while (i < 100) { i++; System.out.println(i); } //死循环 while (true) { //等待客户端连接 //...... } } }
计算1+2+3+...+100=?如下:
package com.hongcheng.struct; public class While2 { public static void main(String[] args) { // 计算1+2+3+...+100=? int i = 0; int sum = 0; while (i < 100) { i++; sum += i; } System.out.println(sum); } }
do while循环
- while循环中,如果判断条件为false,那么循环体不会执行。有时我们需要先执行再判断,do while循环保证至少执行一次。
do while语法:
do { //循环语句 } while (判断条件);
- while和 do while的区别
- while是先判断后执行,do while是先执行后判断。
- do while保证循环体最少执行一次,while有可能一次都不执行。
package com.hongcheng.struct; public class DoWhile { public static void main(String[] args) { int a = 0; while (a < 0) { //循环体一次都不执行 System.out.println(a); a++; } System.out.println("==============="); do { ////循环体至少执行一次 System.out.println(a); a++; } while (a < 0); } }
for循环
for循环是一种可以迭代的循环结构,是最有效、最灵活的循环结构。
- for循环执行的次数在开始前就确定。
for循环语法:
for (初始化; 判断条件; 更新) { //循环语句 }
for循环执行流程
- 先执行初始化条件,初始化条件可以声明一个或多个变量,也可以为空。
- 然后执行判断条件,如果为true就执行循环体,如果为false就跳过循环体执行后面的语句,判断条件也可以为空,即是true。
- 执行一次循环后更新迭代部分。
- 然后判断条件,循环上面的2,3步骤。
package com.hongcheng.struct; public class For1 { public static void main(String[] args) { int i = 1; //初始化条件 while (i <= 100) { //条件判断 System.out.println(i); //循环体 i += 2; //迭代 } System.out.println("while循环结束"); //初始化条件、判断条件、迭代 for (int a = 1; a <= 100; a++) { System.out.println(a); } System.out.println("for循环结束"); } }
增强for循环
- 增强for循环是 JDK5的新特性,主要用在数组和集合的遍历元素。
forEach语法:
for (变量类型 变量名 : 数组名) { //循环语句 }
package com.hongcheng.struct; public class ForEach { public static void main(String[] args) { int[] numbers = {10, 20, 30, 40, 50}; //静态初始化一个数组 //普通for循环,遍历数组 for (int a = 0; a < numbers.length; a++) { System.out.println(numbers[a]); } System.out.println("=============="); //增强for循环,遍历数组 for (int i : numbers) { System.out.println(i); } } }
break和continue
-
break可以用在任何循环和switch中,break的作用是强制退出循环,不再执行循环的剩余语句,转而执行循环后的语句。
-
continue只能用在循环中,continue的作用是中止本次循环,回到判断条件看是否继续循环。
package com.hongcheng.struct; public class Break { public static void main(String[] args) { int i = 0; while (i < 100) { i++; System.out.println(i); if (i == 40) { break; //退出循环,执行循环后的语句 } } System.out.println("最后的i是:" + i); } }
package com.hongcheng.struct; public class Continue { public static void main(String[] args) { int i = 0; while (i < 100) { i++; if (i % 10 == 0) { System.out.println(); continue; //中止这次循环,回到开头重新判断条件 } System.out.print(i + " "); } } }
goto
goto在Java中不使用,但是有。goto相当于书签的作用,可以跳转到标记的地方。带标签的break和continue跟goto很像。
标签的格式:
mark:
这篇关于Java流程控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20RabbitMQ教程:新手入门指南
- 2024-11-20Redis教程:新手入门指南
- 2024-11-20SaToken教程:新手入门指南
- 2024-11-20SpringBoot教程:从入门到实践
- 2024-11-20Java全栈教程:从入门到实战
- 2024-11-20Java微服务系统教程:入门与实践指南
- 2024-11-20Less教程:初学者快速上手指南
- 2024-11-20MyBatis教程:新手快速入门指南
- 2024-11-20QLExpress教程:初学者快速入门指南
- 2024-11-20订单系统教程:从入门到实践的全面指南