Java学习笔记2.4.1 选择结构 - 单分支结构

Posted howard2005

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习笔记2.4.1 选择结构 - 单分支结构相关的知识,希望对你有一定的参考价值。

文章目录

零】本讲学习目标

  1. 了解结构化程序设计原则
  2. 掌握顺序结构的程序
  3. 掌握单分支结构的使用

一、结构化程序设计

(一)结构化基本原则

1、自顶向下

  • 程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。

2、逐步求精

  • 对复杂问题,应设计一些子目标作为过渡,逐步细化。

3、模块化

  • 一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。

4、限制使用goto语句

  • 在程序比较简单是用goto语句是比较灵活,但是当程序比较复杂时很容易造成程序流程的混乱。利用goto语句对以后的后别人看程序是很难理解。调试程序的过程也会变得很困难。

(二)三种流程控制结构

1、顺序结构(Sequence Structure)

2、选择结构(Selection Structure)

3、循环结构(Loop Structure)


  • 循环结构有两种情况
    (1)前测试条件循环:先检票后上车(有可能一次循环操作也不执行)
    (2)后测试条件循环:先上车后检票(无论如何至少要执行一次循环操作)

二、顺序结构

  • 有一个入口和一个出口,按从上向下依的顺序执行各语句。

(一)顺序结构示意图

(二)顺序结构案例演示

案例1、计算三角形面积

package net.hw.lesson06;

import java.util.Scanner;

/**
 * 功能:计算三角形面积
 * 作者:华卫
 * 日期:2020年4月12日
 */
public class Example601 
    public static void main(String[] args) 
        // 声明部分
        double a, b, c, p, s;
        Scanner sc = new Scanner(System.in);

        // 输入部分
        System.out.print("a = ");
        a = sc.nextDouble();
        System.out.print("b = ");
        b = sc.nextDouble();
        System.out.print("c = ");
        c = sc.nextDouble();

        // 处理部分
        p = (a + b + c) / 2;
        s = Math.sqrt(p * (p - a) * (p - b) * (p - c));

        // 输出部分
        System.out.println("s = " + s);
    

运行程序,查看结果:


但是,如果输入的a,b,c构不成三角形,结果如下:

案例2、求解一元二次方程

package net.hw.lesson06;

import java.util.Scanner;

/**
 * 功能:求解一元二次方程
 * 作者:华卫
 * 日期:2020年4月12日
 */
public class Example602 
    public static void main(String[] args) 
        // 声明部分
        double a, b, c, delta, x1, x2;
        Scanner sc = new Scanner(System.in);

        // 输入部分
        System.out.print("a = ");
        a = sc.nextDouble();
        System.out.print("b = ");
        b = sc.nextDouble();
        System.out.print("c = ");
        c = sc.nextDouble();

        // 处理部分
        delta = b * b - 4 * a * c;
        x1 = (-b + Math.sqrt(delta)) / (2 * a);
        x2 = (-b - Math.sqrt(delta)) / (2 * a);

        // 输出部分
        System.out.println("x1 = " + x1);
        System.out.println("x2 = " + x2);
    

运行程序,查看结果:


但是,输入的a,b,c导致了判别式小于零,得不到计算结果。

虽然程序运行没有抛出异常,但是NaN也不是我们想要看到的。

(三)顺序结构小结

  • 顺序结构很简单,按照语句书写次序,依次从上往下执行。上述两个案例,大家可以看到,遇到不能求解的情形,就是给出一个NaN的结果,那并不是我们想要的结果。我们需要事先对能否求解进行判断,如果能求解,那么我们就计算给出结果;如果不能求解,我们就给出相应提示,告诉用户不能求解,这样处理,对用户比较友好。怎么根据情况不同来执行不同的操作呢?这就是我们下面要讲的选择结构。

三、选择结构概述

  • 在实际生活中经常需要作出一些判断,比如开车来到一个十字路口,这时需要对红绿灯进行判断,如果前面是红灯,就停车等候,如果是绿灯,就通行。Java中有一种特殊的语句叫做选择结构语句,它也需要对一些条件作出判断,从而决定执行哪一段代码。
  • 程序发生分支,根据判断框内的条件是否被满足来选择执行一块还是执行 B 块。无论条件是否被满足,只能选择执行一或 B 中之一,不能执行完一块后又执行 B 块无论走哪条路径,都要经过 C 点,然后脱离本选择结构框。
  • 根据处理不同情况的个数,我们下面分成单分支结构、双分支结构与多分支结构来进行讲解。

四、单分支结构

(一)语法格式

if (条件) 
   语句组 

  • 说明:如果语句组只是一条语句,那么花括号是可以省略的。

(二)执行情况

  • 如果条件成立,就执行语句组,否则啥也不做。

(三)案例演示

任务1、判断一个数是否是偶数

package net.hw.lesson06;

import java.util.Scanner;

/**
 * 功能:判断奇偶数
 * 作者:华卫
 * 日期:2020年4月12日
 */
public class Example603 
    public static void main(String[] args) 
        // 声明部分
        int n;
        Scanner sc = new Scanner(System.in);

        // 输入部分
        System.out.print("n = ");
        n = sc.nextInt();

        // 处理部分 + 输出部分
        if (n % 2 == 0) 
            System.out.println(n + "是一个偶数。");
        
    

运行程序,查看结果:


单分支结构经常会嵌套在循环结构里,起一个过滤的作用,比如要对某个范围里满足什么条件的数进行处理。

任务2、筛选某个范围内满足条件的数

  • 输出1~100之间能被3或5整除的数,要求每行输出5个数。

以上是关于Java学习笔记2.4.1 选择结构 - 单分支结构的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记2.4.2 选择结构 - 双分支结构

java基础笔记

S1java基础学习笔记

Java程序设计基础——选择结构(if双分支)

Java程序设计基础——选择结构(if双分支)

Java程序设计基础——选择结构(if双分支)