本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,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); // 输出答案
}
}
  • 运行结果


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

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

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

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

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

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

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

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("");
}

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

 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

3:11

[Java初探实例篇02]__流程控制语句知识相关的实例练习的更多相关文章

  1. 【Java初探外篇02】——关于静态方法与实例方法

    在Java的学习中,我们知道,方法的使用是不可或缺的重要部分,在我们编写第一个Java程序hello world的时候,我们就要开始使用主方法main():它就是一个静态方法(static metho ...

  2. [java初探总结篇]__java初探总结

    前言 终于,java初探系列的学习,要告一阶段了,java初探系列在我的计划中是从头学java中的第一个阶段,知识主要涉及java的基础知识,所以在笔记上实在花了不少的功夫.虽然是在第一阶段上面花费了 ...

  3. “全栈2019”Java第二十六章:流程控制语句中循环语句do-while

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. “全栈2019”Java第二十五章:流程控制语句中循环语句while

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. “全栈2019”Java第二十四章:流程控制语句中决策语句switch下篇

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. Java基础篇(03):流程控制语句,和算法应用

    本文源码:GitHub·点这里 || GitEE·点这里 一.分支语句 流程控制语句对任何一门编程语言都是非常重要的,Java中基于流程控制程序执行的不同步骤和代码块. 1.IF条件 IF条件语句会根 ...

  7. Mysql高手系列 - 第18篇:mysql流程控制语句详解(高手进阶)

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 这是Mysql系列第18篇. 环境:mysql5.7.25,cmd命令中进行演示. 代码中被[]包含的表示可选,|符 ...

  8. Java运算符、引用数据类型、流程控制语句

    1运算符 1.1算术运算符 运算符是用来计算数据的符号. 数据可以是常量,也可以是变量. 被运算符操作的数我们称为操作数. 算术运算符最常见的操作就是将操作数参与数学计算: 运算符 运算规则 范例 结 ...

  9. java基础(4):引用数据类型、流程控制语句

    1. 引用数据类型 1.1 Scanner类 我们要学的Scanner类是属于引用数据类型,我们先了解下引用数据类型. 引用数据类型的使用: 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有 ...

随机推荐

  1. 笔记:IIFE 立即执行的函数表达式 +function ($) { }(window.jQuery);

    在Bootstrap源码(具体请看<Bootstrap源码解析1>)和其他jQuery插件经常看到如下的写法: +function ($) { }(window.jQuery); 这种写法 ...

  2. 学习protobuf 感想

    前俩篇博文是从大牛的博客抄过来的, 写的都很好. 这里还写简单写下自己的感想: 1. 和json比, protobuff编码后的体积小很多, 这是肯定的. 都源自于protobuff内部的一系列特殊的 ...

  3. JVM可支持的最大线程数

    转微博,因为他也是转载  不知道原出处 一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun J ...

  4. map 小模板~~~ 写的不好 继续添加

    #include<map>#include<string.h>#include<iostream>using namespace std; int main(){  ...

  5. Android-Java-面向对象与面向过程举例

    例子一: 面向过程 在生活中的体现: 李四去饭店吃饭,进入风华高档餐饮店后,首先不理服务员,然后冲进厨房,推开厨师,自己开煤气,自己切菜,自己炒菜,自己调料,炒好后自己端出来,然后吃,吃完后 买单 面 ...

  6. CentOS 7.0 Firewall防火墙配置

    启动停止 获取firewall状态 systemctl status firewalld.service firewall-cmd --state 开启停止防火墙 开机启动:systemctl ena ...

  7. 在 Ubuntu 16.04上安装 vsFTPd

    在 Ubuntu 16.04上安装 vsFTPd Ubuntu vsFTPd 关于 vsFTPd vsFTPd 代表 Very Secure File Transfer Protocol Daemon ...

  8. 用一个应用场景理解ASP.NET Core Identity是什么?

    目录 前言 基于声明的认证(Claims-based Authentication) 应用场景一 在ASP.NET Core 中Identity是如何实现的 类ClaimsPrincipal 考察另外 ...

  9. 【mock】后端不来过夜半,闲敲mock落灯花 (mockjs+Vuex+Vue实战)

      mock的由来[假]   赵师秀:南宋时期的一位前端工程师 诗词背景:在一个梅雨纷纷的夜晚,正处于项目编码阶段,书童却带来消息:写后端的李秀才在几个时辰前就赶往临安度假去了,!此时手头仅有一个简单 ...

  10. 获取当前人IP地址

    /*** 获取访问的IP地址* @date 2018年11月26日上午11:31:49* @user : taoshao* @param request* @return*/public String ...