java基础(05)、程序流程控制

2018-06-27 09:58:33来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

 

java基础--程序流程控制

目录

一.  顺序结构(宏观上)

二.  分支结构/选择结构

    2.1  if语句

    2.2  switch语句

三.  循环结构

    3.1  for循环

    3.2  while循环

    3.3  do while循环

    3.4  三种循环的区别

    3.5  循环嵌套

    3.6  其他流程控制语句(break,continue)

 

一些笔记

  • for循环中,for( )括号里定义的变量,循环外无法进行访问。
  • break:终止当前的循环体(switch结构和循环结构中使用);在switch中,case下若没有break则会贯穿,主要用于在满足多种场景下输出相同结果。
  • continue:结束本次循环,进入下一次循环(只用于循环结构)
  • 获得一个double型的随机数,范围是【[0~1)】(可以是0,最大不为1):Math.random()
    1. 扩展:获得一个0-99的随机数:(int)(Math.random()*100);
    2. 获得一个120-500之间的随机数:(int)(Math.random()*(500-120+1)+120);
  • 键盘录入的方法(需熟记):next和nextLine的区别:
    1. 导入包:import java.util.Scanner;
    2. 创建扫描对象:Scanner s = new Scanner(System.in);注:同类下,创建一次即可多次使用。
    3. 调用扫描对象的方法,从键盘获得数据:s.nextInt();    //获取int值,如 int i = nextInt(); 用s.next()获取字符串
next()
    只读取回车之前的内容
nextLine()
    读取内容和回车,如果之前有回车没有被读取,那么剩下的回车直接会被读取
    
        Scanner s = new Scanner(System.in);
        String s1 = s.next();
        System.out.println(s1);
        //next()方法只会读取回车之前的内容,所以,还有一个回车符剩余,将被nextLine方法读取到
        String s2 = s.nextLine();
        System.out.println(s2);
        //读取到上一次next方法剩余的回车符之后,s2就是一个回车符,然后程序就把回车符输出,就结束了

 

 


 

一.  顺序结构

  • 语句按照顺序依次执行
  • 单纯的顺序结构的程序基本不存在

但是,大型程序从宏观上来看的话,各个模块之间也是呈现顺序结构

 


 

二.  分支结构

  • 分支结构:也称选择结构,程序根据条件表达式的值来决定程序的走向

 2.1  If语句

if语句的第一种格式

1 if(条件表达式){
2     语句体;
3 }
4 ...//其它语句

 

if语句的第二种格式

if(条件表达式){
    语句体1;
}else{
    语句体2;
}
...//其它语句

 

if语句的第三种格式

if(条件表达式1){
    语句体1;
}else if(条件表达式2){
    语句体2;
}else if(条件表达式3){
    语句体3;
}
...
else{
    语句体n;
}

 

 

if语句注意事项:

  • if后的括号内一定是布尔值或者布尔表达式
  • 第二种格式与三元运算符的区别:三元运算符运算完要有值出现,并且可以写在其他表达式中
  • if的语句块中可以加多条语句,实现更复杂的逻辑
  • if/else后边的大括号可以省略,此时if语句只能控制到第一个分号结束;如果有多条语句的话,不能省略

建议不要省略大括号

 

如何从键盘录入数据?

import java.util.Scanner;
Scanner s = new Scanner(System.in);
s.nextInt();    //获取int值,用s.next()获取字符串

 

 


 2.2  switch语句

格式:

switch(表达式或变量){
    case 取值1:
        语句体1;
        breakcase 取值2:
        语句体2;
        break;
    …
    default:
        语句体n+1break;
}

 

switch注意事项:

  • switch语句表达式的类型有:byte,short,int,char,String(1.7之后才支持)和枚举类型
  • case之间与default没有顺序:case相当于入口点,没有匹配的case将执行default,default也不是必须的
  • 结束switch语句的情况:遇到break或执行到switch语句结束
  • 如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾

 switch案例

从键盘输入月份数字,显示是第几个季度。

/*
从键盘输入月份数字,显示是第几个季度
*/
import java.util.Scanner;

public class SwitchDemo2{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        System.out.print("请输入月份:");
        int month = s.nextInt();
        
        switch(month){
            case 1:{
                // System.out.println(month + "属于第一季度");
                // break;
            }
            case 2:{
                // System.out.println(month + "属于第一季度");
                // break;
            }
            case 3:{
                System.out.println(month + "属于第一季度");
                break;
            }
            case 4:{
                // System.out.println(month + "属于第二季度");
                // break;
            }
            case 5:{
                // System.out.println(month + "属于第二季度");
                // break;
            }
            case 6:{
                System.out.println(month + "属于第二季度");
                break;
            }
            case 7:{
                // System.out.println(month + "属于第三季度");
                // break;
            }
            case 8:{
                // System.out.println(month + "属于第三季度");
                // break;
            }
            case 9:{
                System.out.println(month + "属于第三季度");
                break;
            }
            case 10:{
                // System.out.println(month + "属于第四季度");
                // break;
            }
            
            case 11:{
                // System.out.println(month + "属于第四季度");
                // break;
            }
            case 12:{
                System.out.println(month + "属于第四季度");
                break;
            }
            default :{
                System.out.println("输入的月份有误");
                break;
            }
        }
        
    }
}

 

 


三.  循环结构

概述:

  • 循环语句可以在满足循环条件的情况下,反复执行某一段代码
  • 被反复执行的代码称为循环体
  • 需要在适当的时候,把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环
  • 完整的循环应该包含以下四个部分:
  1. 初始化语句:初始化工作,在循环体开始之前执行
  2. 循环条件:一个boolean表达式,决定是否执行循环体
  3. 循环体:反复执行的部分
  4. 迭代语句:在循环体执行完之后执行,然后再去判断循环条件,一般用来控制循环条件中的变量,使循环在合适的时候结束 

 3.1  for循环

格式

for(初始化表达式;条件表达式;循环变量控制语句){
    循环体语句;
}

for运行的顺序

  1. 执行初始化表达式,只执行一次,通常是定义循环变量语句
  2. 判断循环条件:为真就往下执行;为假就结束循环
  3. 执行循环体语句
  4. 执行循环变量控制语句,一般是循环变量的自增或自减
  5. 回到第2步,重复这个过程,直到为假时结束

 

 

for循环注意事项:

  • 循环变量通常定义为int型,因为最常用的就是int型
  • 循环条件判断的结果是boolean类型值
  • 小括号中的分号不能写成中文的分号
  • 如果循环体只有一条语句的话,可以省略大括号,但建议写全
  • 循环变量控制语句不必每次改变1,根据情况,可以是任意值

 

for循环求和思想

求和思想:在循环体之外定义一个变量,循环体中不断的往这个变量中追加。

//求1-10所有数之和
public class ForDemo{
    public static void main(String[] args){
        int sum = 0;
        for (int i = 1;i <= 10;i ++){
            sum += i;
        }
        System.out.println(sum);
    }
}

 

for循环练习

/*
在1-100之间,若是3的倍数,则在它之后输出中文“三”,若是5的倍数,
则在它之后输出中文“五”,若是7的倍数,则在它之后输出中文“七”
*/
public class ForDemo{
    public static void main(String[] args){
        for(int i = 1;i<=100;i++){
            System.out.print(i);
            if(i % 3 == 0){
                System.out.print(" 三");
            }
            if(i % 5 == 0){
                System.out.print(" 五");
            }
            if(i % 7 == 0){
                System.out.print(" 七");
            }
            System.out.println();
        }
    }
}

 


 3.2  while循环

格式

    [初始化部分]
while(条件表达式){
    循环体语句;
    [循环变量控制语句]
}

 

执行流程:

  1. 执行初始化语句(如果有的话)
  2. 判断条件表达式真假:如果真,往下执行;如果假,结束循环
  3. 执行循环体语句
  4. 执行循环变量控制语句(如果有的话)
  5. 返回第2步,重复执行,直到条件为假,结束循环

 

for 和 while 的应用场景

  • 当明确知道循环的范围的时候,通常使用for
  • 当不明确循环次数的时候,for和while都可以,通常使用while

不明确循环次数案例:

已知:珠穆朗玛峰的高度是:8848米,假设有一张足够大的纸,厚度是0.01米,请问:这张纸折叠多少次可以保证厚度不低于珠穆朗玛峰的高度?

 

 1 public class WhileDemo{
 2     public static void main(String[] args){
 3         int count = 0;
 4         double hill = 8848.0;
 5         double paper = 0.01;
 6         
 7         while(paper < hill){
 8             count++;
 9             paper = paper * 2;
10             System.out.println("当前折叠的次数是: " + count + ",当前纸的厚度是: " + paper);
11             
12         }
13         System.out.println("折叠的次数是:"+count);
14         
15     }
16 }

 

循环变量的使用问题

  for循环的循环变量,一般情况下在循环外是不能访问到的,因为它的作用域是在for循环的{}之内,但是可以通过把循环变量定义在外边来实现这个功能;或者定义计数器

  while循环本身就把循环变量定义在循环之外,所以没有这个问题

/*
这是个错误的程序,for{}外面的i无法访问
*/
for(int i = 0;i<10;i++){
    ...
}
System.out.println(i);    //错误



int i = 0;
for(;i<10;i++){
    ...
}
System.out.println(i);    //正确

 


3.3  do while循环

do while语句格式

1 [初始化部分]
2 do {
3     循环体语句;
4     [循环变量控制语句]
5 }while(条件表达式);

 

执行流程

  1. 执行初始化部分(如果有的话)
  2. 执行循环体语句
  3. 执行循环变量控制语句(如果有的话)
  4. 判断条件表达式,如果为真,返回第2步;如果假,结束循环

特点:循环体至少会被执行一次

 


 3.4  三种循环的区别

  • while与for可以互换
  • do-while循环的循环体语句至少执行一次

  优先选择使用for循环

 

死循环:条件表达式永远为true

1 //while死循环
2 while(true){
3     ...
4 }
5 
6 //for死循环
7 for(;;){
8     ...
9 }

 


 3.5  循环嵌套 

  1. 外层循环表达式为真时,进入内存循环条件的判断;
  2. 内层循环结束时,跳到外层循环继续判断外层循环的条件。

 

实战练习:用循环嵌套带打印99乘法表

/*
    用循环嵌套带打印99乘法表
*/public class Xx{
    public static void main(String[] args){
        int b = 1;
                do{
            for(int a = 1;a <= b;a++){
                System.out.print(a+"*"+ b+"="+ a * b+"\t");
            }
            System.out.println();    
            b++;
        }while( b <= 9);
    }
}

 


 3.6  其他流程控制语句

break语句:终止当前循环;switch结构和循环结构中使用

continue语句:结束本次循环,进入下一次循环;只在循环结构中使用

注:

  • 这两个语句离开应用范围是没有意义的
  • 这两个语句所在的代码块内,这两个语句之后不能再有任何内容,因为其后的内容永远也执行不到

 

break的使用:

 1 //跳出循环或者是结束switch语句
 2 for(int i = 1;i<10;i++){
 3     System.out.println(i);
 4     if (i == 5) {
 5     break;    //当i为5时,结束当前for循环
 6     }
 7 }
 8 
 9 
10 //break在无限循环中的使用
11 for(;;){
12     ...
13     if(条件表达式){
14     break;
15     }
16 }

 

continue的使用

//continue:结束本次循环,进入下一次循环
for(int i = 1;i<10;i++){
    if(i % 2 == 0){
        continue;  //进入下一次循环,后面的语句不会被执行
    }
    System.out.println(i);
}

 


 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:SpringBoot入门篇--使用IDEA创建一个SpringBoot项目

下一篇:Spring框架学习笔记(一)