写在前面


Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!!

如果小哥哥小姐姐们对我的文章感兴趣,请不要吝啬你们的小手,多多点赞加关注呀!❤❤❤ 爱你们!!!


目录

写在前面

往期回顾

前言:

1. 顺序结构

1.1 顺序结构

2. 分支结构

2.1 if-else结构

2.2 switch-case结构

3. 循环结构

3.1 for循环

3.2 while循环

3.3 do-while循环

3.4 嵌套循环

4. 特殊流程控制语句

4.1 break语句

4.2 continue语句

4.3 特殊流程控制语句

结语


【往期回顾】

一文带你深入理解【Java基础】 · Java语言概述

一文带你深入理解【Java基础】 · Java基本语法:变量

一文带你深入理解【Java基础】· Java基本语法:运算符


【习题总结】

【Java基础】· Java基本语法(下):程序流程控制习题总结


前言:

  • 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
  • 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:
    • 顺序结构
    • 分支结构
    • 循环结构
  • 顺序结构
    • 程序从上到下逐行地执行,中间没有任何判断和跳转。
  • 分支结构
    • 根据条件,选择性地执行某段代码。
    • 有if…else和switch-case两种分支语句。
  • 循环结构
    • 根据循环条件,重复性的执行某段代码。
    • 有while、do…while、for三种循环语句。
    • 注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素

1. 顺序结构


1.1 顺序结构

  • Java中定义成员变量时采用合法的前向引用。如:
public class Test{int num1 = 12;int num2 = num1 + 2;
}
//错误形式:
public class Test{int num2 = num1 + 2;int num1 = 12;
}


2. 分支结构


2.1 if-else结构

  • 分支结构:if-else使用说明

    • 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
    • 语句块只有一条执行语句时,一对{}可以省略,但建议保留
    • if-else语句结构,根据需要可以嵌套使用
    • 当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
    • 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓
    • 当多个条件是“包含”关系时,“小上大下 / 子上父下”

例题:

/*
分支结构中的if-else(条件判断结构)一、三种结构第一种:
if (条件表达式) {执行表达式
}第二种:二选一
if (条件表达式) {执行表达式1
} else {执行表达式2
}第三种:n选一
if (条件表达式) {执行表达式1
} else if (条件表达式) {执行表达式2
} else if (条件表达式) {执行表达式3
}
...
else {执行表达式n
}*/
class IfTest {public static void main(String[] args) {// 举例1int heartBeats = 79;if (heartBeats < 60 || heartBeats > 100) {System.out.println("需要做进一步检查");}System.out.println("检查结束");// 举例2int age = 23;if (age < 18) {System.out.println("你还没有成年");} else {System.out.println("你已经成年了");}// 举例3if (age < 0) {System.out.println("您输入的数据非法");} else if (age < 18) {System.out.println("青少年时期");} else if (age < 35) {System.out.println("青壮年时期");} else if (age < 60) {System.out.println("中年时期");} else if (age < 120) {System.out.println("老年时期");} else {System.out.println("你是要成仙啊~~");}}
}
  • if语句例题一:

    岳小鹏参加Java考试,他和父亲岳不群达成承诺: 如果:
    成绩为100分时,奖励一辆BMW;
    成绩为(80,99]时,奖励一台iphone xs max;
    当成绩为[60,80]时,奖励一个 iPad;
    其它时,什么奖励也没有。
    请从键盘输入岳小鹏的期末成绩,并加以判断
/*
岳小鹏参加Java考试,他和父亲岳不群达成承诺:
如果:
成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone xs max;
当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断说明:
1. else 结构是可选的。
2. 针对于条件表达式:> 如果多个条件表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓。> 如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。> 如果多个条件表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面。否则,范围小的就没机会执行了。
*/import java.util.Scanner;class IfTest {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入岳小鹏期末成绩:(0-100)");int score = scan.nextInt();if (score == 100) {System.out.println("奖励一辆BMW");// be my wife! BMW <---> MSN} else if (score > 80 && score <= 99) {System.out.println("奖励一台iphone xs max");} else if (score >= 60 && score <= 80) {System.out.println("奖励一个 iPad");} else {System.out.println("什么奖励也没有");}}
}

  • if语句例题二:

    编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
    对它们进行排序(使用 if-else if-else),并且从小到大输出。
/*
编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。说明:
1. if-else结构是可以相互嵌套的。
2. 如果if-else结构中的执行语句只有一行时,对应的一对{}可以省略的。但是,不建议大家省略。
*/class IfTest2 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入第一个整数:");int num1 = scanner.nextInt();System.out.println("请输入第二个整数:");int num2 = scanner.nextInt();System.out.println("请输入第三个整数:");int num3 = scanner.nextInt();if (num1 >= num2) {if (num3 >= num1)System.out.println(num2 + "," + num1 + "," + num3);else if (num3 <= num2)System.out.println(num3 + "," + num2 + "," + num1);elseSystem.out.println(num2 + "," + num3 + "," + num1);} else {if (num3 >= num2)System.out.println(num1 + "," + num2 + "," + num3);else if (num3 <= num1)System.out.println(num3 + "," + num1 + "," + num2);elseSystem.out.println(num1 + "," + num3 + "," + num2);}}
}

  • if语句例题三:

    我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每 一年相当于人类的10.5岁,之后每增加一年就增加四岁。那么5岁的狗相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。
    编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人 类的年龄。如果用户输入负数,请显示一个提示信息。
class IfExer {public static void main(String[] args) {int dogAge = 6;if (dogAge >= 0 && dogAge <= 2) {System.out.println("相当于人的年龄:" + dogAge * 10.5);} else if (dogAge > 2) {System.out.println("相当于人的年龄:" + (2 * 10.5 + (dogAge - 2) * 4));} else {System.out.println("狗狗还没出生呢!");}}
}

  • 例题四:如何获取一个随机数:10 - 99
class IfExer {public static void main(String[] args) {int value = (int) (Math.random() * 90 + 10);// [0.0,1.0) --> [0.0,90.0) --->[10.0, 100.0) -->[10,99]System.out.println(value);// 公式:[a,b] : (int)(Math.random() * (b - a + 1) )+ a}
}

  • if语句例题五:
  • 大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出
    一定的条件:高:180cm以上;富:财富1千万以上;帅:是。
    如果这三个条件同时满足,则:“我一定要嫁给他!!!”
    如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
    如果三个条件都不满足,则:“不嫁!”
/*
大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:
高:180cm以上;富:财富1千万以上;帅:是。
如果这三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
如果三个条件都不满足,则:“不嫁!”
*/import java.util.Scanner;class IfExer1 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入你的身高:(cm)");int height = scan.nextInt();System.out.println("请输入你的财富:(千万)");double wealth = scan.nextDouble();/** 方式一: System.out.println("请输入你是否帅:(true/false)"); * boolean isHandsome = scan.nextBoolean();* * if(height >= 180 && wealth >= 1 && isHandsome) {*      System.out.println("我一定要嫁给他!!!"); * } else if (height >= 180 || wealth >= 1 || isHandsome) { *        System.out.println("嫁吧,比上不足,比下有余。");* } else {*         System.out.println("不嫁!"); * }*/// 方式二:System.out.println("请输入你是否帅:(是/否)");String isHandsome = scan.next();if (height >= 180 && wealth >= 1 && isHandsome.equals("是")) {System.out.println("我一定要嫁给他!!!");} else if (height >= 180 || wealth >= 1 || isHandsome.equals("是")) {System.out.println("嫁吧,比上不足,比下有余。");} else {System.out.println("不嫁!");}}
}


2.2 switch-case结构

说明:

  • 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。
  • break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
  • switch结构中的表达式,只能是如下的6种数据类型之一: byte 、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
  • break关键字是可选的。
  • default:相当于if-else结构中的else.  default结构是可选的,而且位置是灵活的。
  • case子句中的值必须是常量,不能是变量名或不确定的表达式值;
  • 同一个switch语句,所有case子句中的常量值互不相同;
  • break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾;
  • default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default;
class SwitchCaseTest {public static void main(String[] args) {int number = 5;switch (number) {case 0:System.out.println("zero");break;case 1:System.out.println("one");break;case 2:System.out.println("two");break;case 3:System.out.println("three");break;default:System.out.println("other");// break;}String season = "summer";switch (season) {case "spring":System.out.println("春暖花开");break;case "summer":System.out.println("夏日炎炎");break;case "autumn":System.out.println("秋高气爽");break;case "winter":System.out.println("冬雪皑皑");break;default:System.out.println("季节输入有误");break;}//**************如下的两种情况都编译不通过*********************//情况一/*boolean isHandsome = true;switch(isHandsome){case true:System.out.println("我好帅啊~~~");break;case false:System.out.println("我好丑啊~~~");break;default:System.out.println("输入有误~~~");}*///情况二/*int age = 10;switch(age){case age > 18:System.out.println("成年了");break;default:System.out.println("未成年");}*/}
}

例题一:对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

说明:如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。

class SwitchCaseTest1 {public static void main(String[] args) {/*int score = 78;switch(score) {case 0:case 1:case 2:...case 100:}*//*int score = 78;if(score >= 60){} else {}*/int score = 78;switch(score / 10) {case 0:case 1:case 2:case 3:case 4:case 5:System.out.println("不及格");break;case 6:case 7:case 8:case 9:case 10:System.out.println("及格");break;}//更优的解决方案:switch(score / 60) {case 0:System.out.println("不及格");break;case 1:System.out.println("及格");break;}}
}

例题二:编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序输出输入的日期为2019年的第几天。

2  15:  31 + 15

5 7: 31 + 28 + 31 + 30 + 7

....

说明:break在switch-case中是可选的

import java.util.Scanner;
class SwitchCaseTest2 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入2019年的month:");int month = scan.nextInt();System.out.println("请输入2019年的day:");int day = scan.nextInt();//定义一个变量来保存总天数int sumDays = 0;//方式一:冗余/*if(month == 1){sumDays = day;} else if (month == 2) {sumDays = 31 + day;} else if (month == 3) {sumDays = 31 + 28 + day;} else if (month == 4) {sumDays = 31 + 28 + 31 + day;}//...else {//month == 12//sumDays = ..... + day;}*///方式二:冗余/*switch(month) {case 1:sumDays = day;break;case 2:sumDays = 31 + day;break;case 3:sumDays = 31 + 28 + day;break;...}*/switch(month) {case 12:sumDays += 30;case 11:sumDays += 31;case 10:sumDays += 30;case 9:sumDays += 31;case 8:sumDays += 31;case 7:sumDays += 30;case 6:sumDays += 31;case 5:sumDays += 30;case 4:sumDays += 31;case 3:sumDays += 28;case 2:sumDays += 31;case 1:sumDays += day;}System.out.println("2019年" + month + "月" + day + "日是当年的第" + sumDays + "天");}
}

例题三:

从键盘分别输入年、月、日,判断这一天是当年的第几天
   注:判断一年是否是闰年的标准:
       1)可以被4整除,但不可被100整除
   或
       2)可以被400整除
说明:
1. 凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。
2. 我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),
  又可以使用if-else时,我们优先选择使用switch-case。原因:switch-case执行效率稍高。

import java.util.Scanner;
class SwitchCaseExer
{public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入year:");int year = scan.nextInt();System.out.println("请输入month:");int month = scan.nextInt();System.out.println("请输入day:");int day = scan.nextInt();//定义一个变量来保存总天数int sumDays = 0;switch(month){case 12:sumDays += 30;case 11:sumDays += 31;case 10:sumDays += 30;case 9:sumDays += 31;case 8:sumDays += 31;case 7:sumDays += 30;case 6:sumDays += 31;case 5:sumDays += 30;case 4:sumDays += 31;case 3://sumDays += 28;//判断year是否是闰年if((year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0){sumDays += 29;}else{sumDays += 28;}case 2:sumDays += 31;case 1:sumDays += day;}System.out.println(year + "年" + month + "月" + day + "日是当年的第" + sumDays + "天");}
}

switchif语句的对比:if和switch语句很像,具体什么场景下,应用哪个语句呢?

  • 如果判断的具体数值不多,而且符合byte、short 、char、int、String、枚举等几种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
  • 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。也就是说,使用switch-case的,都可以改写为if-else。反之不成立。

3. 循环结构

循环结构
  • 在某些条件满足的情况下,反复执行特定代码的功能
循环语句分类
  • for 循环
  • while 循环
  • do-while 循环
循环语句的四个组成部分
  • 初始化部分(init_statement)
  • 循环条件部分(test_exp)
  • 循环体部分(body_statement)
  • 迭代部分(alter_statement)


3.1 for循环

语法格式 :
for (①初始化部分; ②循环条件部分; ④迭代部分)
}
        ③循环体部分;
执行过程:
①-②-③-④-②-③-④-②-③-④-.....-②
说明:
②循环条件部分为boolean类型表达式,当值为false时,退出循环
①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
④可以有多个变量更新,用逗号分隔

例题一:

class ForTest
{public static void main(String[] args) {/*System.out.println("Hello World!");System.out.println("Hello World!");System.out.println("Hello World!");System.out.println("Hello World!");System.out.println("Hello World!");*/for(int i = 1;i <= 5;i++){    //i:1,2,3,4,5System.out.println("Hello World!");}//i:在for循环内有效。出了for循环就失效了。//System.out.println(i);//练习:int num = 1;for(System.out.print('a');num <= 3;System.out.print('c'),num++){System.out.print('b');}//输出结果:abcbcbcSystem.out.println();//例题:遍历100以内的偶数,输出所有偶数的和,输出偶数的个数int sum = 0;//记录所有偶数的和int count = 0;//记录偶数的个数for(int i = 1;i <= 100;i++){if(i % 2 == 0){System.out.println(i);sum += i;count++;}//System.out.println("总和为:" + sum);}System.out.println("总和为:" + sum);System.out.println("个数为:" + count);}
}

例题二:编写程序从1循环到150,并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。

class ForTest1
{public static void main(String[] args) {       for(int i = 1;i <= 150;i++){         System.out.print(i + "  ");if(i % 3 == 0){System.out.print("foo ");}if(i % 5 == 0){System.out.print("biz ");}if(i % 7 == 0){System.out.print("baz ");}//换行System.out.println();}}
}

例题三:题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
比如:12和20的最大公约数是4,最小公倍数是60。

说明:break关键字的使用:一旦在循环中执行到break,就跳出循环

import java.util.Scanner;
class ForTest
{public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("请输入第一个正整数:");int m = scan.nextInt();System.out.println("请输入第二个正整数:");int n = scan.nextInt();//获取最大公约数//1.获取两个数中的较小值int min = (m <= n)? m : n;//2.遍历for(int i = min;i >= 1 ;i--){if(m % i == 0 && n % i == 0){System.out.println("最大公约数为:" + i);break;//一旦在循环中执行到break,就跳出循环}}//获取最小公倍数//1.获取两个数中的较大值int max = (m >= n)? m : n;//2.遍历for(int i = max;i <= m * n;i++){if(i % m == 0 && i % n == 0){System.out.println("最小公倍数:" + i);break;}}}
}

3.2 while循环

语法格式
①初始化部分
while(②循环条件部分)
}
        ③循环体部分;
        ④迭代部分;
}
执行过程:
----------...-
说明:
  • 注意不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环。
  • for循环和while循环可以相互转换
  • 区别:for循环和while循环的初始化条件部分的作用范围不同。

例题一:

class  WhileTest
{public static void main(String[] args) {//遍历100以内的所有偶数int i = 1;while(i <= 100){if(i % 2 == 0){System.out.println(i);}  i++;}//出了while循环以后,仍可以调用。System.out.println(i);//101}
}

3.3 do-while循环

语法格式
①初始化部分;
do{
③循环体部分
④迭代部分
}while(②循环条件部分);
执行过程:
---------...
说明:
  • do-while循环至少执行一次循环体。
  • 开发中,使用for和while更多一些。较少使用do-while
例题一:
class DoWhileTest
{public static void main(String[] args) {//遍历100以内的偶数,并计算所有偶数的和及偶数的个数int num = 1;int sum = 0;//记录总和int count = 0;//记录个数do{           if(num % 2 == 0){System.out.println(num);sum += num;count++;}num++;}while(num <= 100);System.out.println("总和为:" + sum);System.out.println("个数为:" + count);//*************体会do-while至少执行一次循环体***************int number1 = 10;while(number1 > 10){System.out.println("hello:while");number1--;}int number2 = 10;do{System.out.println("hello:do-while");number2--;}while(number2 > 10);}
}

例题二:题目:从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。

说明:
1. 不在循环条件部分限制次数的结构:for(;;) 或 while(true)
2. 结束循环有几种方式?
     方式一:循环条件部分返回false
     方式二:在循环体中,执行break

import java.util.Scanner;
class ForWhileTest
{public static void main(String[] args) {       Scanner scan = new Scanner(System.in);int positiveNumber = 0;//记录正数的个数int negativeNumber = 0;//记录负数的个数for(;;){//while(true){         int number = scan.nextInt();//判断number的正负情况if(number > 0){positiveNumber++;}else if(number < 0){negativeNumber++;}else{//一旦执行break,跳出循环break;}}System.out.println("输入的正数个数为:" + positiveNumber);System.out.println("输入的负数个数为:" + negativeNumber); }
}


3.4 嵌套循环

嵌套循环(多重循环)
  • 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环或内层循环。
  • 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
  • 设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。
  • 嵌套循环的使用
    1.嵌套循环:将一个循环结构A声明在另一个循环结构B的循环体中,就构成了嵌套循环

    2.
    外层循环:循环结构B
    内层循环:循环结构A

    3. 说明
    ① 内层循环结构遍历一遍,只相当于外层循环循环体执行了一次
    ② 假设外层循环需要执行m次,内层循环需要执行n次。此时内层循环的循环体一共执行了m * n次

    4. 技巧:
       外层循环控制行数,内层循环控制列数

例题一:嵌套循环的应用1:

九九乘法表
1 * 1 = 1
2 * 1 = 2  2 * 2 = 4
。。。
9 * 1 = 9 。。。 9 * 9 = 81

class NineNineTable
{public static void main(String[] args) {for(int i = 1;i <= 9;i++){          for(int j = 1;j <= i;j++){System.out.print(i + " * " + j + " = " + (i * j) + "  ");}System.out.println();}}
}

例题二:

class ForForTest
{public static void main(String[] args) {       //******//System.out.println("******");for(int i = 1;i <= 6;i++){System.out.print('*');}System.out.println("\n");/**************************/for(int j = 1;j <= 4;j++ ){for(int i = 1;i <= 6;i++){System.out.print('*');}System.out.println();}/*          i(行号)       j(*的个数)*            1           1**         2           2***            3           3****       4           4*****      5           5*/for(int i = 1;i <= 5;i++){//控制行数for(int j = 1;j <= i;j++){    //控制列数System.out.print("*");}System.out.println();}        /*          i(行号)       j(*的个数)   规律:i + j = 5 换句话说:j = 5 - i;****     1           4***            2           3**         3           2*          4           1*/ for(int i = 1;i <= 4;i++){for(int j = 1;j <= 5 - i;j++){System.out.print("*");  }System.out.println();}/***************************/}
}

4. 特殊流程控制语句


4.1 break语句

break语句用于终止某个语句块的执行
{ ……
break;
……
}
break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是
哪一层语句块
label1:
{ ……
label2:
{ ……
label3:
{ ……
break label2;
……
}
}
}

4.2 continue语句

continue 语句
  • continue只能使用在循环结构中
  • continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环
  • continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环

break和continue关键字的使用
                       使用范围            循环中使用的作用(不同点)             相同点
break:            switch-case            
                      循环结构中             结束当前循环                    关键字后面不能声明执行语句

continue:        循环结构中            结束当次循环                    关键字后面不能声明执行语句

例题一:(方法一)

100以内的所有质数的输出。
质数:素数,只能被1和它本身整除的自然数。-->从2开始,到这个数-1结束为止,都不能被这个数本身整除。

最小的质数是:2

class PrimeNumberTest
{public static void main(String[] args) {   boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值for(int i = 2;i <= 100;i++){    //遍历100以内的自然数for(int j = 2;j < i;j++){    //j:被i去除if(i % j == 0){     //i被j除尽isFlag = false;}}//if(isFlag == true){System.out.println(i);}//重置isFlagisFlag = true;}}
}

方法二:

100000以内的所有质数的输出。
质数:素数,只能被1和它本身整除的自然数。-->从2开始,到这个数-1结束为止,都不能被这个数本身整除。

class PrimeNumberTest1
{public static void main(String[] args) {boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值int count = 0;//记录质数的个数//获取当前时间距离1970-01-01 00:00:00 的毫秒数long start = System.currentTimeMillis();for(int i = 2;i <= 100000;i++){    //遍历100000以内的自然数//优化二:对本身是质数的自然数是有效的。//for(int j = 2;j < i;j++){for(int j = 2;j <= Math.sqrt(i);j++){//j:被i去除   if(i % j == 0){ //i被j除尽isFlag = false;break;//优化一:只对本身非质数的自然数是有效的。}}//if(isFlag == true){//System.out.println(i);count++;}//重置isFlagisFlag = true;}//获取当前时间距离1970-01-01 00:00:00 的毫秒数long end = System.currentTimeMillis();System.out.println("质数的个数为:" + count);System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:break:1546 - 优化二:13}
}

方法三:

100000以内的所有质数的输出。
质数:素数,只能被1和它本身整除的自然数。-->从2开始,到这个数-1结束为止,都不能被这个数本身整除。

class PrimeNumberTest2
{public static void main(String[] args) {int count = 0;//记录质数的个数//获取当前时间距离1970-01-01 00:00:00 的毫秒数long start = System.currentTimeMillis();label:for(int i = 2;i <= 100000;i++){    //遍历100000以内的自然数for(int j = 2;j <= Math.sqrt(i);j++){//j:被i去除    if(i % j == 0){ //i被j除尽continue label;}}//能执行到此步骤的,都是质数count++;}//获取当前时间距离1970-01-01 00:00:00 的毫秒数long end = System.currentTimeMillis();System.out.println("质数的个数为:" + count);System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:break:1546 - 优化二:13}
}

4.3 特殊流程控制语句

  • return:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束。
  • 与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。
特殊流程控制语句说明
  • break只能用于switch语句循环语句中。
  • continue 只能用于循环语句中。
  • 二者功能类似,但continue是终止本次循环,break是终止本层循环。
  • break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句。
  • 标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。
  • 很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条语句上,然后执行它。但使程序容易出错。Java中的break和continue是不同于goto的。

结语


本人会持续更新文章的哦!希望大家一键三连,你们的鼓励就是作者不断更新的动力

一文带你深入理解【Java基础】· Java基本语法:程序流程控制相关推荐

  1. Java基本语法-程序流程控制

    程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即: 顺序结构.分支结构.循环结 ...

  2. java循环语句三角形_JAVA——程序流程控制——循环语句——for循环(打印三角形)...

    //要求:用*打印出一个直角三角形.高8*. public class zhijiaosanjiaoxing { public static void main(String[] args) { fo ...

  3. Python基础篇:Python 程序流程控制,让你的代码有理有据

    前言 大家好,辣条哥又来了,昨天出去玩了没有更新,所以今天直接来干的,跟大家讲一下Python 程序的流程控制 和其它编程语言一样,按照执行流程划分,Python 程序也可分为 3 大结构,即顺序结构 ...

  4. 一文带你深入理解【Java基础】· 枚举类

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  5. 一文带你深入理解【Java基础】· 面向对象编程(下)②代码块、final和abstract

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  6. 一文带你深入理解【Java基础】· 数组

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  7. 一文带你深入理解JVM内存模型

    一文带你深入理解JVM内存模型 一.JAVA的并发模型 共享内存模型 在共享内存的并发模型里面,线程之间共享程序的公共状态,线程之间通过读写内存中公共状态来进行隐式通信 该内存指的是主内存,实际上是物 ...

  8. [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别

    [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别 Read 读入方法 read(): 一般是这种形式 public int read() 1.从流数据中读取的 ...

  9. Java基础----Java编程语言概述

    Java基础----Java编程语言概述 文章目录 Java基础----Java编程语言概述 Java编程语言概述 1-1 软件开发介绍 1.1软件开发介绍 1.2 常用命令 1-2 计算机编程语言介 ...

最新文章

  1. kafka-2.11-2.3.0版本配置文件参数详解_Kafka版本特性总结
  2. three.js 背景图片
  3. uml 时序图_UML学习-14种UML图
  4. Microsoft公司的匈牙利法命名规则
  5. 数据类型之字符串练习
  6. IoTDI2019论文列表
  7. 云存储精华问答 | 如何选择云迁移策略?
  8. [转载] 【零基础学爬虫】python中的yield详解
  9. exc_bad_instruction(code=EXC_I386_INVOP,subcode=0x0) 错误
  10. git clone 出现fatal: unable to access ‘https://github 类错误解决方法
  11. UDP实现简单的超时重传
  12. 2020中青杯本科题目学习
  13. Terminating app due to uncaught exception ‘NSInvalidArgumentException‘
  14. springboot-1-搭建一个springboot项目
  15. uibot和按键精灵区别_uibot和按键精灵有什么区别?
  16. Windows 下载WebStorm
  17. NIO及多线程实现聊天室完整版
  18. Python批量更改txt文本每行数据
  19. 生活都不容易,如果你感觉生活很苦,那就说明你在吃苦,同样,如果你感觉生活有奔头,那就是在努力。
  20. 虚幻4游戏开发_4_导入fbx和编辑

热门文章

  1. 被误传了数千年的四大成语 相濡以沫 女子与小人难养也 无度不丈夫 以德抱怨
  2. Alamofire学习(一)网络基础
  3. 子曾经曰过,别人对你的看法都是你表演给他们看的结果。
  4. python openslide 查看并保存切片的略缩图,并将Image图片转换成Base64
  5. BIDS Helper (Free)微软BI开发辅助工具--非常棒
  6. SQLServer各个版本之间的差异
  7. 身体很弱的程序员的跑步计划
  8. 记账后,如何避免误删除账目
  9. 教你轻松分清pandas中的axis=0,axis=1具体含义
  10. 电脑tdr太低是什么意思_电脑越来越慢怎么办?我教你一招很简单的