1 程序流程控制

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

1.1 if-else语句

  • 格式1:
  1. if(条件表达式){
  2. //执行代码块;
  3. }

  • 格式2:
  1. if(条件表达式){
  2. //执行代码块1;
  3. }else{
  4. //执行代码块2;
  5. }

  • 格式3:
  1. if(条件表达式1){
  2. //执行代码块1;
  3. }else if(条件表达式2){
  4. //执行代码块2;
  5. }
  6. ...
  7. else{
  8. //执行代码块n;
  9. }

  • 示例:
  1. package day04;
  2.  
  3. public class IfTest {
  4. public static void main(String[] args) {
  5. int heartBeats = 70;
  6. if (heartBeats < 60 || heartBeats > 100) {
  7. System.out.println("需要去医院做检查");
  8. }
  9. }
  10. }
  • 示例:
  1. package day04;
  2.  
  3. public class IfTest {
  4. public static void main(String[] args) {
  5. boolean flag = true;
  6. if(flag){
  7. System.out.println("周末出去玩");
  8. }else{
  9. System.out.println("天气不好,周末在家睡觉");
  10. }
  11. }
  12. }
  • 示例:
  1. package day04;
  2.  
  3. public class IfTest {
  4. public static void main(String[] args) {
  5. int age = 50;
  6. if (age > 0 && age <= 0.6) {
  7. System.out.println("婴儿");
  8. } else if (age > 0.6 && age <= 2) {
  9. System.out.println("幼儿");
  10. } else if (age > 2 && age <= 6) {
  11. System.out.println("儿童");
  12. } else if (age > 6 && age <= 14) {
  13. System.out.println("少年");
  14. } else if (age > 14 && age <= 35) {
  15. System.out.println("青年");
  16. } else if (age > 35 && age <= 60) {
  17. System.out.println("中年");
  18. } else if (age > 60) {
  19. System.out.println("老年");
  20. }
  21. }
  22. }
  • 示例:
  1. package day04;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class IfTest {
  6. public static void main(String[] args) {
  7. Scanner in = new Scanner(System.in);
  8. System.out.println("请输入分数:");
  9. int score = in.nextInt();
  10. if (score == 100) {
  11. System.out.println("奖励一辆BMW");
  12. } else if (score > 80 && score <= 99) {
  13. System.out.println("奖励一台iphone xr");
  14. } else if (score > 60 && score <= 80) {
  15. System.out.println("奖励一个ipad");
  16. } else {
  17. System.out.println("什么奖励也没有");
  18. }
  19.  
  20. }
  21. }
  • 示例:
  1. package day04;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /**
  6. * 从键盘输入三个整数,对他们进行排序,并且按照从小到大排序
  7. */
  8. public class IfTest {
  9. public static void main(String[] args) {
  10. Scanner in = new Scanner(System.in);
  11. System.out.println("请输入第一个整数");
  12. int num1 = in.nextInt();
  13. System.out.println("请输入第二个整数");
  14. int num2 = in.nextInt();
  15. System.out.println("请输入第三个整数");
  16. int num3 = in.nextInt();
  17.  
  18. if (num1 >= num2) {
  19. //num2 num1 num3
  20. if (num3 >= num1) {
  21. System.out.println(num2 + "<=" + num1 + "<=" + num3);
  22. } else if (num3 <= num2) { //num3 num2 num1
  23. System.out.println(num3 + "<=" + num2 + "<=" + num1);
  24. } else {//num2 num3 num1
  25. System.out.println(num2 + "<=" + num3 + "<=" + num1);
  26. }
  27. }else if(num1 < num2){
  28. //num1 num2 num3
  29. if(num3 >= num2){
  30. System.out.println(num1 + "<=" + num2 + "<=" + num3);
  31. }else if(num3 <= num1){ //num3 num1 num2
  32. System.out.println(num3 + "<=" + num1 + "<=" + num2);
  33. }else{ // num1 num3 num2
  34. System.out.println(num1 + "<=" + num3 + "<=" + num2);
  35. }
  36.  
  37. }
  38. }
  39. }

1.2 switch-case语句

  • 格式:
  1. switch(表达式){
  2. case 常量1:
  3. 语句1;
  4. //break;
  5. case 常量2:
  6. 语句2;
  7. //break;
  8. ……
  9. default:
  10. 语句n;
  11. //break;
  12. }

  • switch语句的有关规则:
  • ①switch(表达式)中的表达式中的值必须是byte、short、char、int、枚举(JDK5.0)、String(JDK7.0)之一。
  • ②case自己中的值必须是常量,不能是变量名或不确定的表达式值。
  • ③同一个switch语句,所有case子句中的常量值互不相同。
  • ④break语句用来执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾。
  • ⑤default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default。
  • 示例:
  1. package day04;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /**
  6. * 如果成绩>=60分,则输出"合格";如果成绩<60分,则输出"不及格"。
  7. */
  8. public class SwitchTest {
  9. public static void main(String[] args) {
  10. Scanner input = new Scanner(System.in);
  11. System.out.println("请输入分数:");
  12. int score = input.nextInt();
  13. switch (score / 10) {
  14. case 0:
  15. case 1:
  16. case 2:
  17. case 3:
  18. case 4:
  19. case 5:
  20. System.out.println("不及格");
  21. break;
  22. case 6:
  23. case 7:
  24. case 8:
  25. case 9:
  26. case 10:
  27. System.out.println("及格");
  28. break;
  29. }
  30.  
  31. }
  32. }
  • switch和if语句的对比:
  • ①如果判断的具体数值不多,而且符号byte、short、char、int、String、枚举等几种类型。虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。
  • ②其他情况,对区间判断,对结果为boolean类型判断,使用if语句。换言之,使用switch-case语句的,都可以改写为if-else语句,反之,不成立。

1.3 循环结构

  • 循环结构:在某些条件满足的条件下,反复执行特定代码的功能。
  • 循环的分类:
  • ①for循环。
  • ②while循环。
  • ③do-while循环。

1.3.1 循环语句的四个组成部分

  • ①初始化条件。
  • ②循环条件部分。
  • ③循环体部分。
  • ④迭代部分。

1.3.2 for循环

  • 格式:
  1. for (①初始化条件;②循环条件部分;④迭代部分){
  2. ③循环体部分;
  3. }
  • 说明:
  • ②循环条件部分为boolean类型的表达式,当值为false的时候。退出循环。
  • ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔。
  • ④可以有多个变量更新,用逗号隔开。  
  • 执行过程:①-->②-->③-->④-->②-->③-->……-->②。
  • 示例:
  1. package day04;
  2.  
  3. public class ForTest {
  4. public static void main(String[] args) {
  5. for (int i = 0; i < 5; i++) {
  6. System.out.println("helloworld!!!");
  7. }
  8. }
  9. }
  • 示例:
  1. package day04;
  2.  
  3. /**
  4. * 100以内的偶数
  5. */
  6. public class ForTest {
  7. public static void main(String[] args) {
  8. for (int i = 1; i <= 100; i = i + 1) {
  9. System.out.println(i);
  10. }
  11. }
  12. }
  • 示例:
  1. package day04;
  2.  
  3. /**
  4. * 编写程序从1循环到150,并在每行打印一个值,另外在每个3的倍数行上打印"foo",在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。
  5. */
  6. public class ForTest {
  7. public static void main(String[] args) {
  8. for (int i = 1; i <= 150; i++) {
  9. System.out.print(i);
  10. if (i % 3 == 0) {
  11. System.out.print("\t" + "foo");
  12. }
  13. if (i % 5 == 0) {
  14. System.out.print("\t" + "biz");
  15. }
  16. if (i % 7 == 0) {
  17. System.out.print("\t" + "baz");
  18. }
  19. System.out.println();
  20. }
  21. }
  22. }
  • 示例:
  1. package day04;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /**
  6. * 输入两个正整数m和n,求其最大公约数和最小公倍数。
  7. * 例如:12和20的最大公约数是4,最小公倍数是60。
  8. */
  9. public class ForTest {
  10. public static void main(String[] args) {
  11. Scanner input = new Scanner(System.in);
  12. System.out.println("请输入第一个正整数:");
  13. int m = input.nextInt();
  14. System.out.println("请输入第二个正整数:");
  15. int n = input.nextInt();
  16.  
  17. //求最大公约数:先求最小正整数,比如12和20的最小正整数是12,然后拿12和20和12、11、10取模,如果都能取模等于0,即最大公约数。
  18. int highestCommonDivissor = 0;
  19. int min = (m >= n) ? n : m;
  20. for (int i = min; i >= 1; i--) {
  21. if (m % i == 0 && n % i == 0) {
  22. highestCommonDivissor = i;
  23. break;
  24. }
  25. }
  26. System.out.println("最大公约数是:" + highestCommonDivissor);
  27.  
  28. //求最小公倍数:先求最大值,这是循环的起始值;循环的终止条件是两个数相乘的结果
  29. int lowestCommonMultiple = 0;
  30. int max = (m >= n) ? m : n;
  31. for (int i = max; i <= m * n; i++) {
  32. if (i % m == 0 && i % n == 0) {
  33. lowestCommonMultiple = i;
  34. break;
  35. }
  36.  
  37. }
  38. System.out.println("最小公倍数是:" + lowestCommonMultiple);
  39.  
  40. }
  41. }

1.3.3 while循环

  • 格式:
  1. ①初始化条件;
  2. while(②循环条件部分){
  3. ③循环体部分;
  4. ④迭代部分;
  5. }
  • 说明:
  • ①注意不要忘记④迭代部分。否则,循环将变为死循环。
  • ②for循环和while在某种程序上是可以相互转换的。
  • 执行过程:①-->②-->③-->④-->②-->③-->④-->……。
  • 示例:
  1. package day04;
  2.  
  3. public class WhileTest {
  4. public static void main(String[] args) {
  5. int result = 0;
  6. int i = 1;
  7. while (i <= 100) {
  8. result += i;
  9. i++;
  10. }
  11. System.out.println("1-100的整数和是:" + result);
  12. }
  13. }

1.3.4 do-while循环

  • 格式:
  1. ①初始化条件;
  2. do{
  3. ③循环体部分;
  4. ④迭代部分;
  5. }while (②循环条件部分);
  • 说明:do-while循环至少会执行一次。
  • 执行过程:①-->③-->④-->②-->③-->④-->……。
  • 示例:
  1. package day04;
  2.  
  3. public class DoWhileTest {
  4. public static void main(String[] args) {
  5. int result = 0;
  6. int i = 1;
  7. do {
  8. result += i;
  9. i++;
  10. } while (i <= 100);
  11. System.out.println("1-100之内的整数和是:" + result);
  12. }
  13. }

1.3.5 循环嵌套

  • 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for、while、do...while均可以作为外层循环或内层循环。
  • 实际上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false的时候,才会完全跳出内层循环,才可结束外层循环的当次循环,开始下一次循环。
  • 如果外层循环次数为m次,内层循环为n次,那么内层循环体实际上需要执行m*n次。
  • 示例:
  1. package day04;
  2.  
  3. public class NestedLoop {
  4. public static void main(String[] args) {
  5. for (int i = 1; i <= 9; i++) {
  6. for (int j = 1; j <= i; j++) {
  7. System.out.print(j + "*" + i + "=" + (j * i) + "\t");
  8. }
  9. System.out.println();
  10. }
  11. }
  12. }
  • 示例:
  1. package day04;
  2.  
  3. /**
  4. * 100以内的所有质数的输出。
  5. * 质数:素数,只能被1和其本身整数的自然数。
  6. * 思路:从2开始,到这个数-1结束为止,都不能被这个数本身整数。
  7. * 最小的质数是2。
  8. */
  9. public class PrimeNumber {
  10. public static void main(String[] args) {
  11.  
  12. for (int i = 2; i <= 100; i++) {
  13. boolean flag = false;//表示质数
  14. for (int j = 2; j <= i - 1; j++) {
  15. if (i % j == 0) {//不是质数
  16. flag = true;
  17. }
  18. }
  19. if (!flag) {
  20. System.out.println(i);
  21. }
  22.  
  23. }
  24. }
  25. }
  • 示例:
  1. package day04;
  2.  
  3. /**
  4. * 100以内的所有质数的输出。
  5. * 质数:素数,只能被1和其本身整数的自然数。
  6. * 思路:从2开始,到这个数-1结束为止,都不能被这个数本身整数。
  7. * 最小的质数是2。
  8. */
  9. public class PrimeNumber {
  10. public static void main(String[] args) {
  11.  
  12. for (int i = 2; i <= 100; i++) {
  13. boolean flag = false;//表示质数
  14. for (int j = 2; j <= i - 1; j++) {
  15. if (i % j == 0) {//不是质数
  16. flag = true;
  17. break;//优化1
  18. }
  19. }
  20. if (!flag) {
  21. System.out.println(i);
  22. }
  23.  
  24. }
  25. }
  26. }
  • 示例:
  1. package day04;
  2.  
  3. /**
  4. * 100以内的所有质数的输出。
  5. * 质数:素数,只能被1和其本身整数的自然数。
  6. * 思路:从2开始,到这个数-1结束为止,都不能被这个数本身整数。
  7. * 最小的质数是2。
  8. */
  9. public class PrimeNumber {
  10. public static void main(String[] args) {
  11.  
  12. for (int i = 2; i <= 100; i++) {
  13. boolean flag = false;//表示质数
  14. //优化2
  15. for (int j = 2; j <= Math.sqrt(i); j++) {
  16. if (i % j == 0) {//不是质数
  17. flag = true;
  18. break;//优化1
  19. }
  20. }
  21. if (!flag) {
  22. System.out.println(i);
  23. }
  24.  
  25. }
  26. }
  27. }

java基本语法三的更多相关文章

  1. Java基础语法(三)---数组

    一.概念         同一种类型数据的集合.简单的来说就是一容器,用来装东西的. 使用数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素. 二.一维数组的格式 格式1:元素类型 [ ...

  2. Java基础语法<三> 输入输出

    1. 读取输入 Scanner in = new Scanner(System.in);   输入一行(包含空格) String str = in.nextLine()   读取一个单词(以空白符作为 ...

  3. JavaSE基础(三)--Java基础语法

    Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...

  4. 011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三—— 变量值——即Java中的“字面值”

    011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三-- 变量值--即Java中的"字面值" 变量值可以是 ...

  5. 010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二——变量类型——即Java中的数据类型

    010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二--变量类型--即Java中的数据类型 Java中变量的三要素 变量名 变 ...

  6. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  7. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  8. JAVA正则表达式语法大全

    [正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n ...

  9. java基础语法笔记

    这段时间看了一些java,急了一些笔记,记下一遍以后复习用! 2016-07-24 15:12:40 java很多语法都跟C#类似,下面列举一些不同的地方******注意***** java中的系统方 ...

随机推荐

  1. mysql知识积累

    验证mysql工作状态 systemctl status mysql.service 启动 sudo systemctl start mysql 停止 service mysql stop 重启mys ...

  2. Event.target和Event.currentTarget的区别

    <style> * { margin:0; padding:0; list-style:none; } #ul { width:400px; height:250px; margin:0 ...

  3. c3p0使用

    c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> ...

  4. Hadoop-2.8.0分布式安装手册

    目录 目录 1 1. 前言 3 2. 特性介绍 3 3. 部署 5 3.1. 机器列表 5 3.2. 主机名 5 3.2.1. 临时修改主机名 6 3.2.2. 永久修改主机名 6 3.3. 免密码登 ...

  5. Ng第十二课:支持向量机(Support Vector Machines)(三)

    11 SMO优化算法(Sequential minimal optimization) SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规 ...

  6. hdu1176--免费馅饼(简单动态规划)

    都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了地上当然就 ...

  7. POJ1742--Coins(动态规划)

    People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony ...

  8. Android 获取高度宽度为0的时候的处理

    转自http://my.oschina.net/xiahuawuyu/blog/167949 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例: 首先我们自己写一 ...

  9. poj2186tarjan算法缩点求出度

    poj2186tarjan算法缩点求出度 自己打一遍第一题,入门啦,入门啦 题目还算简单,多头牛,给你仰慕关系(可传递),问你最后有没有牛被所有的牛仰慕 根据关系可以建图,利用tarjan算法缩点处理 ...

  10. js加减运算·传参

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...