热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从零开始学大数据-Java基础-流程控制语句(5)

我们从零开始学习大数据技术,从java基础,到Linux技术涉猎,再深入到大数据技术的Hadoop、Spark、Storm技术,最后到大数据企业平台的搭建,层层


我们从零开始学习大数据技术,从java基础,到Linux技术涉猎,再深入到大数据技术的Hadoop、Spark、Storm技术,最后到大数据企业平台的搭建,层层递进,由点到面!希望技术大牛能过来指导学习。


上一节学习了三元运算符/键盘录入,本节学习流程控制语句。

开始之前,我们先看一下上节的练习题。


一、练习题

(1)键盘录入三个数据,获取三个数据中最大值,程序如下:

从零开始学大数据-Java基础-流程控制语句(5)

程序执行结果如下:

从零开始学大数据-Java基础-流程控制语句(5)

(2)键盘录入两个数据,比较两个数据是否相等,程序代码如下:

从零开始学大数据-Java基础-流程控制语句(5)

程序执行结果如下:

从零开始学大数据-Java基础-流程控制语句(5)


二、流程控制语句


通过我们前面的学习,我们应该可以感觉到在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的,也就是说程序的流程对运行结果有直接的影响。


所以,我们必须要清楚每条语句的执行过程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。

下面我们来讲讲流程控制语句的分类(主要有三种):

  • 顺序结构

  • 选择结构

  • 循环结构


流程控制语句概念:可以控制程序的执行流程


1、顺序结构


规则:从上往下,依次执行

举例:

从零开始学大数据-Java基础-流程控制语句(5)

程序执行结果:

从零开始学大数据-Java基础-流程控制语句(5)


2、选择结构(也被称为分支结构)

选择结构有两种语句,分别为如下:

  • if 语句

  • switch语句


   

if语句


if语句(三种格式)

  1. 格式1:适合做单个判断

  2. 格式2:适合做两个判断

  3. 格式3:适合做多个判断


if语句格式1

if(比较表达式){

语句体;

}


执行流程规则:

  • 先计算比较表达式的值,看其返回值是true,还是false.

  • 如果是true,就执行语句体;

  • 如果是false,就不执行语句体。

序代码举例:

从零开始学大数据-Java基础-流程控制语句(5)

程序执行结果:

从零开始学大数据-Java基础-流程控制语句(5)

  • 可见,在if语句中,x等于10为true,大括号里的语句体可以正常执行;

  • x等于20为false,大括号里的语句体不执行,但不影响后面的语句“over”执行.


if语句的注意事项:

  1. 比较表达式无论简单还是复杂,结果必须是boolean类型

  2. if语句的语句体如果是一条语句,大括号可以省略;

  3. 如果是多条语句,就不能省略,建议永远都不要省略。

  4. 一般来说,有左大括号就没有分号,有分号就没有左大括号

如下程序代码,if语句里面的表达式都是布尔类型的

从零开始学大数据-Java基础-流程控制语句(5)


if语句格式2


if(比较表达式){

语句体1;

}else {

语句体2;

}

执行流程:

  • 首先计算比较表达式的值,看其返回值式true还是false.

  • 如果式true,就执行语句体1;

  • 如果式false,就执行语句体2;

注意:else后面是没有比较表达式的,只有if后面才会加表达式


程序代码案例,如下:

从零开始学大数据-Java基础-流程控制语句(5)

程序执行结果:

从零开始学大数据-Java基础-流程控制语句(5)


练习题:


下面我们针对if else语句做两个练习题:

1、获取两个数据中较大的值

2、判断一个数据是奇数还是偶数,并输出

程序代码如下,我将两道题都通过下述代码实现:

从零开始学大数据-Java基础-流程控制语句(5)

执行结果:


从零开始学大数据-Java基础-流程控制语句(5)

  • 可见,if语句和三元运算符可以完成相同的效果,但也是有需要注意以下的区别:

区别:

三元运算符实现的,都可以采用if语句实现,反之不成立。

什么时候if语句实现不能用三元运算符改进呢?

  • 当if语句控制的操作是一个输出语句的时候就不能。

  • 因为三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出语句。


案例:

从零开始学大数据-Java基础-流程控制语句(5)


程序执行结果:

从零开始学大数据-Java基础-流程控制语句(5)


如果将判断奇偶的例子,使用三元运算做改进,可以参照以下程序代码:

从零开始学大数据-Java基础-流程控制语句(5)

程序执行结果:

从零开始学大数据-Java基础-流程控制语句(5)


  • 可见,验证了我们前面提到的三元运算符实现的,都可以采用if语句实现,反之不成立的结论。


if语句的格式3


if(比较表达式1){

语句体1;

}else if(比较表达式2){

语句体2;

}else if(比较表达式3){

语句体3;

}

...

else{

语句体n+1;

}

执行流程:

  • 首先计算表达式1看其返回值是true还是false,

  • 如果是true,就执行语句体1,if语句结束。

  • 如果是false,接着计算比较表达式2看其返回值是true还是false

  • 如果是true,就执行语句体2,if语句结束

  • 如果是false,接着计算比较表达式3,看其返回值是true还是false.

  • ...

  • 如果是false,则执行语句体n+1.

举例:键盘录入一个成绩,判断并输出成绩的等级。

  • 90 - 100 优秀

  • 80 - 90 好

  • 70 - 80 良

  • 60 - 70 及格

  • 0 - 60 不及格

程序代码如下:



程序执行结果:


注意:

在写一个程序的基本测试的时候,一定要考虑以下几个问题:

  • 正确数据

  • 错误数据

  • 边界数据


所以针对上面的数据,我们可以做个改进,先判断先错误数据,这样会更好,如下:



扩展练习题(自行完成):

1、获取两个数据中较大的值

2、判断一个数据是奇数还是偶数,并输出


本节我们就先告一段落,下一节我们将学习Switch语句


往期文章:


从零开始学大数据-Java基础开篇(1)

从零开始学大数据-Java基础语法(2)

从零开始学大数据-Java运算符(3)

从零开始学大数据-Java基础-三元运算符/键盘录入(4)


从零开始学大数据-Java基础-流程控制语句(5)


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • Maven构建Hadoop,
    Maven构建Hadoop工程阅读目录序Maven安装构建示例下载系列索引 序  上一篇,我们编写了第一个MapReduce,并且成功的运行了Job,Hadoop1.x是通过ant ... [详细]
  • 【转】腾讯分析系统架构解析
    TA(TencentAnalytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性、及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可。本文将从实 ... [详细]
  • 《Spark核心技术与高级应用》——1.2节Spark的重要扩展
    本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第1章,第1.2节Spark的重要扩展,作者于俊向海代其锋马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看1. ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  • SparkOnYarn在YARN上启动Spark应用有两种模式。在cluster模式下,Spark驱动器(driver)在YARNApp ... [详细]
  • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
    本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
  • 开发笔记:Spark Java API 之 CountVectorizer
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了SparkJavaAPI之CountVectorizer相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 探索MLlib机器学习
    公众号后台回复关键词:pyspark,获取本项目github地址。MLlib是Spark的机器学习库,包括以下主要功能。实用工具ÿ ... [详细]
author-avatar
老陈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有