[Java初探实例篇02] __关于流程控制语句的实例练习

本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句.

  • 练习题
    1.判断奇偶数(if,switch语句)
    2.打印菱形(for循环)
    3.计算1+1/2!+1/3!+1/4!+...+1/20!(使用while循环语句)

IDE:IDEA
语言:java
本次实例:流程控制语句的练习与巩固


  • 源代码
package day_4_2;

/**
 * @outhor xiaoshe
 * @date 2019/4/2  - @time 21:50
 * 创建package day_4_2
 * 创建类Sty_ProcessControl
 * 流程控制的实例练习
 */
import java.security.PublicKey;
import java.util.Scanner;
/**
 * 1,编写程序,实现判断变量x 的奇偶数.
 * 2,应用for循环打印菱形
 * 3,使用while循环语句计算1+1/2!+1/3!...1/20!之和.
 */
public class Sty_ProcessControl {
    public static void main(String[] args) { // 主方法 main()
        // 使用Scanner对象方法控制输入
        Scanner ascanner = new Scanner(System.in);

        // 将输入值赋值给int变量a.
       int a = ascanner.nextInt();

       // 实例化对象,
        Sty_ProcessControl control = new Sty_ProcessControl();

        //传参数a调用判断方法,
        control.sty_JudgeNumber1(a); // if条件判断语句判断奇偶.
        control.sty_JudgeNumber2(a); // switch多分支语句判断奇偶.
        //通过实例化对象调用方法.
        control.sty_Printdiamond(); // for循环嵌套多级运用打印菱形.
        control.sty_getFactorial(); // 使用while循环语句求阶乘.
    }

    /**
     *通过if条件语句判断x的奇偶
     */
  public void sty_JudgeNumber1(int anumber){  // 定义方法,返回值为int型,int型参数 anumber
      if(anumber%2==0){  // 通过if条件判断语句,判断输入的数是否能整除2.
      System.out.println("偶数"); // 能(true),输出偶数,
      }else{
          System.out.println("奇数"); // 不能(false),输出奇数
      }
  }

    /**
     * swicth多分支语句判断奇偶数
     * @param anumber
     */
  public void sty_JudgeNumber2(int anumber){
      switch (anumber%2){
          case 0:
              System.out.println("偶数");
              break;
          case 1:
              System.out.println("奇数");
              break;
      }
  }

    /**
     * 利用for循环打印菱形
     * 1,首先实现用for循环打印出依次递增与递减的的*号整列(正三角与倒三角),形成菱形的一半.
     * 2,第二步,实现正反三角数量的翻倍,然后在这基础上每行的数量需减一,形成奇数阵列.
     * 第三步,正反三角的左侧插入对应的三角空格阵列.
     * 最后,打印结果.
     *
     * 由于Java程序使按先后顺序执行,所以空格整列要写在前面.
     */
  public void sty_Printdiamond(){ // 定义实现打印方法
      for(int i=0;i<5;i++){  // 定义外层for循环,控制打印上半三角形的行数i.
          for(int j=0;j<=5-i;j++){  // 两个并列子级for循环之一,使用循环控制打印一个递减的倒三角空格阵列.
              System.out.print(" "); // 打印空格.
          }
          for(int k=0;k<i*2-1;k++){ // 连个并行子级for循环之一,使用循环控制打印一个正三角*阵列.并使*号数量翻倍并每行减一.
              System.out.print("*"); // 打印*号.
          }
          System.out.println(); // 控制换行,在每行最后执行.
      }
        for (int i=0;i<5;i++){  // 并行外层for循环之一,控制打印倒三角整列.
            for(int j=0;j<=i;j++){
                System.out.print(" ");
            }
            for (int j=10;j>=2*(i+1);j--){
                System.out.print("*");
            }
            System.out.println();
        }
  }

    /**
     * 使用while循环语句求阶乘.
     *阶乘,n!=1*2*3*4*...*n;
     * 1/1+1/(1*2)
     * 思路,第一步,先算出每一项的阶乘,阶乘=前一项的阶乘*当前项数,将阶乘定义为double型变量,代入.
     * 第二步,每项阶乘相加求和.结果=前n-1项的和加上当前项,将结果定义为aAnswer变量,代入.
     * 第三步,通过while循环,代入变量与公式,(相当于递归的过程).
     */
  public void sty_getFactorial(){
      int i=1; // 定义变量i;控制循环次数,同时也代表了每一项的项数.
      double afactorial=1; // 定义变量afactorial,表示每一项的阶乘.
      double aAnswer=0;  // 定义aAnswer变量,代表结果.
      while (i<=20){
          afactorial=afactorial*(1.0/i);  // 每项阶乘=前一项阶乘*当前项.
          aAnswer=aAnswer+afactorial;  // 最终结果=前一项的结果加上当前项的阶乘.
          i++; //控制变量i,在每次运算后向前加1.
      }
        System.out.println(aAnswer); // 输出答案
  }
}
  • 运行结果
2019-4-3-03.png

  • 在练习过程中.关于通过for循环打印菱形一题的分析

号阵列看作是图形.整个菱形的打印,其实是由四个三角形整列完成.依次排列的顺序为上半部分一个倒三角空格阵列,一个正三角阵列.下半部分一个正三角空格序列,和一个倒三角*号阵列.

关于打印菱形的思路,接下来直接使用代码及图示表示.

  • 首先,通过图解,我们知道,其实一个菱形就是从一个长方形,取四边中点得到.那么在程序编辑中如何来实现菱形的演变呢.
2019-4-3-02.png

1.我们首先要能够打印一个正三角形,倒三角形,这里只需要使*递增递减逐行排列即可.

for(int i=0;i<5;i++){  // 外层for循环,来控制行数.
            for(int k=0;k<i*2-1;k++){  // 子级循环,控制每行打印*的个数.递增.
                System.out.print("*"); //打印*号
            }
            System.out.println();  //控制换行,在每行最后执行.
        }
2019-4-3-04.png

我们可以明显的察觉到.这就是一个菱形四分之一的右上的组成部分.那么我们如何将它演变成菱形呢,我们可以再进行一次打印,使它反转成一个倒三角,即使*递减打印.

for(int i=0;i<5;i++){  // 外层for循环,来控制行数.
            for(int k=0;k<i;k++){  // 子级循环,控制每行打印*的个数.递增.
                System.out.print("*"); //打印*号
            }
            System.out.println();  //控制换行,在每行最后执行.
        }
        for(int i=0;i<5;i++){
            for(int k=0;k<5-i;k++){  // 控制每行打印*号的个数,递减.
                System.out.print("*");
            }
            System.out.println("");
        }
2019-4-3-05.png

这样,我们就可以得到一个一半的菱形了,那么接下来,我们如何让它向左反转一次呢,显然我们没办法做到让它左右翻转,那我们只能先把它摆正,然后将这两个三角整列使它的内容(可以理解为面积)翻倍,就应当是菱形了.如何摆正,是否只要在上方的正三角前面填充一个空格的倒三角整列,在下方的倒三角前面填充一个正三角整列就可以了,这里我用$符号代替空格,以求观察更直观.

 for(int i=0;i<5;i++){  // 外层for循环,来控制行数.
            for (int j=0;j<5-i;j++){ // 倒三角的$(空格)整列
                System.out.print("$");
            }
            for(int k=0;k<i;k++){  // 子级循环,控制每行打印*的个数.递增.
                System.out.print("*"); //打印*号
            }
            System.out.println();  //控制换行,在每行最后执行.
        }
        for(int i=0;i<5;i++){
            for (int j=0;j<i;j++){ // 正三角的$(空格)整列
                System.out.print("$");
            }
            for(int k=0;k<5-i;k++){  // 控制每行打印*号的个数,递减.
                System.out.print("*");
            }
            System.out.println("");
        }
2019-4-3-06.png

最后一步,将内容翻倍,但要记得每行*号需要减一,这样才能够组成奇数整列对应组成菱形

2019-4-3-07.png


更新时间:
2019-4-3
3:11

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,746评论 0 10
  • 做任何事情都应当遵守一定的原则,程序设计也是如此,需要有流程控制语言来实现与用户的交流。流程控制对于任何一门编程语...
    葛木小舍先生丶阅读 572评论 0 1
  • 2019年的太阳 至今没有露面 难道是被蒙蒙烟雨 阻隔在了2018 还是被云彩 裹挟着去了 别的城市 说好的阳光普...
    艾小墨阅读 487评论 4 8
  • 为什么最近这么多的负能量??老是调节不好!!!!是因为东西老掉?还是因为工作不太顺利?没有人陪?找不到人说话...
    崔代平阅读 174评论 0 0
  • 这小不点把我们办公室空调遥控器放到同事抽屉里了,下午没开空调,冻死宝宝们了。 晚上回楼上,走到操场时惊叹着"哇!妈...
    溜溜_46a9阅读 177评论 0 0