Java基础篇(03):流程控制语句,和算法应用
2020-12-18 22:34
标签:格式 code sunday 模式 特定 core cep 位置 oss 流程控制语句对任何一门编程语言都是非常重要的,Java中基于流程控制程序执行的不同步骤和代码块。 IF条件语句会根据不同的判断条件执行不同的语句,if后括号内的条件是否成立关键步骤,IF条件的判断结果必然要是true或false。IF...Else语句则是满足IF条件,就执行相应代码块,否则就执行Elase代码块。 节点案例,测试结果描述: 注意:在流程控制语句中必须使用大括号,即使只有一行代码,避免采用单行的编码方式,这是基础规范。在上面的测试节点4和5,代码看着就感觉扎心。 Else...IF分支语句用于多种情况进行的判断处理,直到分支判断条件成功,执行分支模块代码,如果没有else条件,可以所有分支都不满足,直接结束。 注意:根据条件逐个判断,直到找到第一个满足的条件,不会再继续往下面的判断执行,分支语句执行完毕就会退出当前的else...if流程。超过3层的的逻辑判断代码可以使用卫语句、策略模式、状态模式等来实现。 流程描述:switch语句先获取表达式的值,判断表达式的值与case语句后的常量值是否相同,匹配成功则执行该case后的代码块,直到遇到break语句后终止,如果缺失break打断,则继续匹配下一case常量,直到遇到break为止。如果条件全不匹配,则执行default后面的语句。default语句可选,如果不存在default语句,同一个switch语句,case的常量值必须互不相同。 注意:从JDK1.7之后,switch支持对String字符串的匹配。 循环语句就是在满足特定条件的情况下,反复执行同个操作。循环语句包括:for循环、while循环、do···while循环。 Java开发中最有用的循环方式,也是诸多算法中的基础控制语句,在常见的很多算法编码实现中,都需要借助for循环方式。 节点案例,测试结果描述: 注意:越是基础的东西,学起来越难,for语句作为很多算法实现的基础控制,理解起来相当的绕。 while循环语句首先判断条件是否成立,成立才执行循环体; do···while循环语句先执行一次循环体,然后判断条件是否成立,所以do···while至少会执行一次; 注意:while循环在实际的开发中,因为极其容易导致死循环,所以使用并不多。 Java中有三种流程中断语句,关键字分别为break、continue、return语句。 Java中最常用的流程控制关键字,当执行return语句后,从该方法返回,返回到调用该方法的业务流程中。 return 常在位置 break中断语句常用在for、while、do···while循环中,用于退出当前整个循环流程,非当前这一次循环。 Continue中断语句常用在for、while、do···while循环中,用于退出当前这一次循环,进入下一次循环。 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 基于递归思想的各种计算方法实现。 推荐阅读:Java基础系列 Java基础篇(03):流程控制语句,和算法应用 标签:格式 code sunday 模式 特定 core cep 位置 oss 原文地址:https://blog.51cto.com/14439672/2513480一、分支语句
1、IF条件
public class Process01 {
public static void main(String[] args) {
// 演示:Node01
if (compare01(40,30)){
System.out.println("40>30:true");
} else {
System.out.println("40>30:false");
}
// 演示:Node02
if (compare01(10,20) && compare01(20,30)){
System.out.println("条件成立");
} else {
System.out.println("条件不成立");
}
// 演示:Node03
if (compare01(20,10) || compare01(20,30)){
System.out.println("条件成立");
} else {
System.out.println("条件不成立");
}
// 演示:Node04
if(compare02(1,1))
if(compare02(2,2))
System.out.println("Running...");
// 演示:Node05
if(compare01(1,2))
if(compare01(5,3)){
System.out.println("5>3");
}
}
private static boolean compare01 (int num1,int num2){
System.out.println("判断:num1="+num1+";num2="+num2);
return num1 > num2 ;
}
private static boolean compare02 (int num1,int num2){
System.out.println("判断:num1="+num1+";num2="+num2);
return num1 == num2 ;
}
}
2、IF-Else-IF条件
public class Process02 {
public static void main(String[] args) {
elseIf(11) ;
elseIf(9) ;
elseIf(5);
}
private static void elseIf (Integer num){
if (num > 10){
System.out.println("num > 10");
} else if (num > 7){
System.out.println("num > 7");
} else if (num > 4){
System.out.println("num > 4");
} else {
System.out.println("num
3、Switch条件
public class Process03 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("What day is it today:");
String value = scan.next();
weekInfo(value);
}
private static void weekInfo (String value){
switch (value) {
case "Monday":
System.out.println("Monday");
break;
case "Tuesday":
System.out.println("Tuesday");
break;
case "Wednesday":
System.out.println("Wednesday");
break;
case "Thursday":
System.out.println("Thursday");
break;
case "Friday":
System.out.println("Friday");
break;
case "Saturday":
System.out.println("Saturday");
break;
case "Sunday":
System.out.println("Sunday");
break;
default:
System.out.println("Matching failure");
break;
}
}
}
二、循环语句
1、For循环
public class Process04 {
public static void main(String[] args) {
// Node01
int sum = 0;
for(int i=1; i
2、While循环
public class Process05 {
public static void main(String[] args) {
int num1 = 1;
int num2 = 1;
// while循环
while(num1
三、流程中断
1、Return语句
public class Process06 {
public static void main(String[] args) {
System.out.println(getNum1());
System.out.println(getNum2());
}
public static int getNum1 (){
int a =100;
try{
return a+1; // 这里是运算逻辑,非赋值
}catch(Exception e){
e.printStackTrace();
}finally{
return a;
}
}
public static int getNum2 (){
int a =100;
try{
return a++; // a++ -> a=a+1 此时a的值改变
}catch(Exception e){
e.printStackTrace();
}finally{
return a;
}
}
}
2、Break语句
public class Process07 {
public static void main(String[] args) {
for (int i = 1 ; i
3、Continue语句
public class Process08 {
public static void main(String[] args) {
for (int i = 1 ; i
四、应用场景
1、冒泡排序算法
public class Process09 {
public static void main(String[] args) {
int[] score = {9,8,7,6,5} ;
// 排序次数:最多 length - 1 次
for (int i = 0 ; i score[j+1]){
int temp = score[j] ;
score[j] = score[j+1] ;
score[j+1] = temp ;
}
}
}
// 输出排序后的结果集
for (int i = 0 ; i
2、排列组合算法
public class Process10 {
public static void main(String[] args) {
arrange() ;
}
public static void arrange (){
int i=0; // 百位数
int j=0; // 十位数
int k=0; // 个位数
int t=0; // 计数器
for (i = 1 ; i
3、递归常见算法
public class Process11 {
public static void main(String[] args) {
System.out.println(getSumOne(100));
System.out.println(getSumTwo(30));
System.out.println(getSumThree(5));
}
/**
* 使用递归的方式计算1+2+...+100
*/
public static int getSumOne (int i){ // 传入100
int sum ;
if (i == 1){
return 1 ;
}
else {
sum = i + getSumOne(i - 1) ;
}
return sum ;
}
/**
* 一列数的规则如下: 1、1、2、3、5、8、13、21、34...
* 求第30位数是多少, 用递归算法实现
*/
public static int getSumTwo (int i){ // 传入第几位数下标
if (i
五、源代码地址
GitHub·地址
https://github.com/cicadasmile/java-base-parent
GitEE·地址
https://gitee.com/cicadasmile/java-base-parent
序号
文章标题
01
Java基础:基本数据类型,核心点整理
02
Java基础:特殊的String类,和相关扩展API
01
Java并发:线程的创建方式,状态周期管理
02
Java并发:线程核心机制,基础概念扩展
03
Java并发:多线程并发访问,同步控制
04
Java并发:线程间通信,等待/通知机制
05
Java并发:悲观锁和乐观锁机制
06
Java并发:Lock机制下API用法详解
上一篇:快速排序
下一篇:JAVA锁相关知识总结
文章标题:Java基础篇(03):流程控制语句,和算法应用
文章链接:http://soscw.com/index.php/essay/37185.html