Java5 全面认识java的控制流程

Posted 爱书不爱输的程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java5 全面认识java的控制流程相关的知识,希望对你有一定的参考价值。

全面认识java控制流程

1.块作用域

块(即复合语句)是指由若干条Java语句组成的语句,并用一对大括号括起来。
块确定了变量的作用域。
一个块可以嵌套在另一个块中。下面就是嵌套在main方法块中的一个块。

public static void main(String[] args)
	int n;
	...
	
		int k;
		...
	//k is only defind up to here	

但是,不能在嵌套的两个块中声明同名的变量

public static void main(String[] args)
	int n;
	...
	
		int k;
		int n;  //ERROR---can't redefine n in inner block
		...
	//k is only defind up to here	

2.条件语句

在Java中,条件语句的形式为if (condition) statement,这里的条件必须用小括号括起来。

  • 如果需要在某个条件为真时执行多条语句。在这种情况下,就可以使用决语句(block statement)
if(yourSales >= target)

	performance = "Satisfactory";
	bonus = 100;

//当 yourSales大于或等于target 时,将执行大括号中的所有语句
  • if语句的流程图
Created with Raphaël 2.2.0 开始 yourSales >= target? performance ="Satisfactory" bonus = 100 结束 yes no
  • if/else 语句的流程图
Created with Raphaël 2.2.0 开始 yourSales >= target? performance ="Satisfactory" bonus = 100+0.01* (yourSales -target) 结束 performance ="Unsatisfactory" bonus = 0 yes no

3.迭代语句

  • while,do-whilefor用来控制循环,它们也叫作迭代语句(iteration statement)。
  • 迭代语句会重复执行,直到起控制作用的布尔表达式结果变为false。

3.1while语句

  • 格式:while(condition) statement
  • 如果开始时循环条件的值就为false,那么while循环一次也不执行
  • while语句的流程图
Created with Raphaël 2.2.0 开始 确认? 操作1 操作2 输出 结束 yes no
  • while循环语句在最前面检测循环条件。因此,循
    环体中的代码有可能一次都不执行。如果希望循环体至少执行一次,需要使do-while循环将检测放在最后。

3.2do-while语句

  • 格式:do statement while(condition);
  • 这种循环语句先执行语句(通常是一个语句块),然后再检测循环条件。如果为true,就重复执行语句,然后再次检测循环条件,以此类推。
  • do-while语句的流程图
Created with Raphaël 2.2.0 开始 操作1 输入 确认? 结束 yes no

3.3for语句

  • 格式:for(initialization;boolean-expression;step) statement
    • 初始化表达式(initialization),布尔表达式(Boolean-expression )和步进(step)都可以为空
  • 每次迭代前会测试布尔表达式。只要结果是false,就不再循环,而是执行跟在foi循环后面的语句。每次循环结束,都会执行一次步进
  • for语句的流程图
Created with Raphaël 2.2.0 开始 操作1 确认? 输出操作 操作2 结束循环 yes no
  • 当在for语句的初始化部分中声明了一个变量之后,这个变量的作用域就扩展到这个for循环体的末尾。
for(int i= 1;i <= 10;i++)

	...

//i no longer defined here
  • 特别指出,如果在for语句内部定义一个变量,这个变量就不能在循环体之外使用。因此,如果希望在for循环体之外使用循环计数器的最终值,就要确保这个变量在循环之外声明!
int i;
for(i= 1;i <= 10;i++)

	...

//i is still defined here
  • 可以在不同的for循环中定义同名的变量
for(int i= 1;i <= 10;i++)

	...

for(int i= 11;i <= 20;i++) 
//OK to define another variable named i

	...

  • for 循环语句其实可以理解为while循环的一种简化形式:
for(i= 1;i > 10;i--)

	...

int i = 10;
while(i > 0)
	i--;

3.4 for-in语法

  • Java 5引入了一种更加简洁的for语法,可以用于数组和容器,有时候叫作"増强的for" ( enhanced for )。大部分文档中直接将其称为foreach语法,但Java 8里又增加了一个我们经常使用的forEach()方法。这样的术语使用起来容易混淆,在《On Java》中叫做for-in语法
  • for-in语句会自动为你生成每一项元素,这样你不需要创建int变量来对这个元素构成的序列进行计数。
import java.util.*;
public class ForInFloat
	public static void main(String[] args)
		float[] f = new float[10];
		for(int i = 0;i < 10;i++) //旧式的for循环
			f[i] = i;
		for(float x : f)  //for-

Java学习笔记之:Java流程控制

一、介绍

Java流程控制包括顺序控制、条件控制和循环控制

  顺序控制,就是从头到尾依次执行每条语句操作。条件控制,基于条件选择执行语句,比方说,如果条件成立,则执行操作A,或者如果条件成立,则执行操作A,反之则执行操作B。循环控制,又称为回路控制,根据循环初始条件和终结要求,执行循环体内的操作。

  顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构。

  Java有两种分支结构:

  • if语句
  • switch语句

  Java中有三种主要的循环结构:

  • while循环
  • do…while循环
  • for循环

二、笔记

package com.hgd.study2;

import java.util.Scanner;

/**
 * java的流程控制:顺序结构 分之机构 循环结构
 * 
 * @author HuTiger 顺序结构:通过debug模式可以看出java程序的运行时顺序结构的
 * 
 *         分支结构:if语句
 *
 */
public class ProcessControl {

    public static void main(String[] args) {
        // IfStudy();
        // SwitchCaseStudy();
        // WhileStudy();
    }

    /*
     * IF语句
     */
    private static void IfStudy() {

        /*
         * 根据条件表达的世界(true||false)来判断是否进入语句块 if(条件表达式){ 语句块 } 继续执行后面的语句
         */
        int i = 100;
        if (i > 60) {
            System.out.println(i);
        }
        System.out.println("后面需要执行的语句");

        /*
         * if else 语句
         */

        // system.in就是标准输入,可以获取从键盘输入的值
        // 通过scanner(jdk提供给我们的工具)来处理获取到的数据
        System.out.println("请输入分数!");
        Scanner sc = new Scanner(System.in);

        int j = sc.nextInt();// 把用户输入的数赋值给j
        System.out.println("控制台获取到的值是:" + j);

        if (j > 60) {
            System.out.println("通过");
        } else {
            System.out.println("没通过");
        }
        System.out.println("当if else 执行后需要执行的内容");

        /*
         * if else if else if ...else
         */
        // 场景:将一个5(score)分制分为 :5分的评价等级A 4==B 3==C 其他是D
        Scanner sca = new Scanner(System.in);
        int score = sca.nextInt();
        if (score >= 0 && score <= 5) {
            if (score == 5) {
                System.out.println("A");
            } else if (score == 4) {
                System.out.println("B");
            } else if (score == 3) {
                System.out.println("C");
            } else {
                System.out.println("D");
            }
        } else {
            System.out.println("输入不合法");
        }

        /*
         * 练习:百分制系统 90-100 优秀 75-89 良好 60-74 合格 其他 不合格
         */
        Scanner scan = new Scanner(System.in);
        int score1 = scan.nextInt();
        if (score1 >= 0 && score1 <= 100) {
            if (score1 >= 90 && score1 <= 100) {
                System.out.println("优秀");
            } else if (score1 >= 75) {
                System.out.println("良好");
            } else if (score1 >= 60) {
                System.out.println("合格");
            } else {
                System.out.println("不合格");
            }
        } else {
            System.out.println("输入不合法");
        }

    }

    /*
     * switch case
     */
    private static void SwitchCaseStudy() {

        /*
         * 分支语句:switch case key:需要比较的表达式 value:与表达式进行比较的值
         * 执行流程:如果key和value比较的结果为true,那么将执行case部分的代码,case部分可以有多个 类似于else if 部分
         * 区别是key和value之间的比较只能是== default部分是不满足以上任何去执行的代码 ,类似于else
         * 
         * switch 后面括号中的表达式的值必须是符合byte,char,short,int类型的常量表达式 jdk1.7以后可以使用string
         * ,而不能用浮点型或long类型
         * 
         * switch(key) { case value: break; default: break; }
         */

        // 场景:将一个5(score)分制分为 :5分的评价等级A 4==B 3==C 其他是D
        Scanner sc = new Scanner(System.in);
        int score = sc.nextInt();
        switch (score) {
        case 5:
            System.out.println("A");
            break;// 标准写法 break不能少 跳出当前语句块,如果没有break会直接进入下一个case语句
        case 4:
            System.out.println("B");
            break;
        case 3:
            System.out.println("C");
            break;
        default:
            System.out.println("D");
            break;
        }
    }

    /*
     * while 循环和do while
     */
    private static void WhileStudy() {

        /*
         * 执行流程: 当条件表达式为true的时候进入代码块,执行需要执行的代码 当条件表达式为false的时候执行后面的语句
         * 
         * while(条件表达式){ 需要执行的代码部分 } 后面的语句
         */

        /*
         * 场景:输入1-100的整数分析:给输出的值一个变量I,当i在1-100之间的时候输出
         */
        int i = 1;// 循环的起点
        while (i <= 100) {
            System.out.println(i);
            // 给出循环的步长
            i++;
        }
        System.out.println("打印结束");
        
        
        /*
         * do while
         * 
         * do{
         * }while(条件表达式)
         */
        
        int a=1;
        do{//语句块中的内容无论条件是否满足都会先执行一次
            System.out.println(a);
            a++;
        }
        while(a<=0);
        
    }

    /*
     * for循环
     */
    private static void ForStudy() {

        /*
         * 场景:打印1-100 int i=1是循环的起点 i++ 循环的补偿 i<=100 循环的条件
         */
        for (int i = 1; i <= 100; i++) {
            System.out.println(i);
        }
        System.out.println("打印结束");
    }
}

 

以上是关于Java5 全面认识java的控制流程的主要内容,如果未能解决你的问题,请参考以下文章

Java流程控制

Java流程控制

Java流程控制

java流程控制

Java流程控制

3.从零学Java之(流程控制)