当前位置: 移动技术网 > IT编程>开发语言>Java > 05、java基础--程序流程控制

05、java基础--程序流程控制

2018年04月03日  | 移动技术网IT编程  | 我要评论

 

java基础--程序流程控制

【目录】

一.  顺序结构(宏观上)

二.  分支结构/选择结构(if,switch)

    2.1  if语句

    2.2  switch语句

三.  循环结构

    3.1  for循环

    3.2  while循环

 其他。。。。。。。

 

一些关键了解内容

  • for循环中,for( )括号里定义的变量,循环外无法进行访问。
  • 键盘录入的方法(需熟记):
  1. 导入包:import java.util.Scanner;
  2. 创建扫描对象:Scanner s = new Scanner(System.in);注:同类下,创建一次即可多次使用。
  3. 调用扫描对象的方法,从键盘获得数据:s.nextInt();    //获取int值,如 int i = nextInt(); 用s.next()获取字符串
  • break:终止当前的循环体
  • 在switch中,case下若没有break则会贯穿,主要用于在满足多种场景下输出相同结果。 

 

 

一.  顺序结构

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

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

 

 

二.  分支结构

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

 

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;
        break;
    case 取值2:
        语句体2;
        break;
    …
    default:
        语句体n+1;
        break;
}

 

 

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步,重复执行,直到条件为假,结束循环

 break:终止当前的循环体

 

for 和 while 的应用场景

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

案例:

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

public class WhileDemo{
    public static void main(String[] args){
        int count = 0;
        double hill = 8848.0;
        double paper = 0.01;
        
        while(paper < hill){
            count++;
            paper = paper * 2;
            System.out.println("当前折叠的次数是: " + count + ",当前纸的厚度是: " + paper);
            
        }
        System.out.println("折叠的次数是:"+count);
        
    }
}

 

 

循环变量的使用问题

  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);    //正确

 

 

for和while的应用场景

待补充。。。

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网