在Java中,使用条件语句和循环结构确定控制流程,在本文中,主要包括块作用域、条件语句、循环结构、中断循环这四部分。

一、块作用域

块,也叫复合语句,是指由一对大括号括起来的若干条Java语句。块决定了变量的作用域。一个块可以嵌套多个块。

二、条件语句

如果判断超过三层,建议拆分开来写,这样更加清晰。

package javalearningday04;

/**
* 条件语句
* @author 小川94
* @date 2018年1月31日
*/
public class IfElseDemo { public static void main(String[] args) {
testMethod(78);
} /**
* 判断成绩
*/
public static void testMethod(int score) {
if (score < 0) {
System.out.println("请传入正确的分数!");
} else {
if (score >= 90 && score <= 100) {
System.out.println("成绩优秀");
} else if (score >= 80) {
System.out.println("成绩良好");
} else if (score >= 70) {
System.out.println("成绩一般");
} else if (score >= 60) {
System.out.println("成绩及格");
} else {
System.out.println("不及格");
}
}
}
}

三、循环结构

3.1 for循环

package javalearningday04;

/**
* for循环的用法
* @author 小川94
* @date 2018年1月31日
*/
public class ForDemo { public static void main(String[] args) {
testMethod();
testMethod2();
} /**
* 计算1,2,3...,100的和
*/
public static void testMethod() {
int sum = 0;
for (int i=1; i<101; i++) {
sum += i;
}
System.out.println(sum); //sum = 5050
} public static void testMethod2() {
String[] strArray = {"小明","小马","小王"};
// foreach循环遍历
for (String str : strArray) {
System.out.println(str); // 依次打印 小明 小马 小王
}
// 两种写法的输出结果都是一样的
for (int i=0; i<strArray.length; i++) {
System.out.println(strArray[i]); // 依次打印 小明 小马 小王
}
} }

3.2 do{...}while()循环

先执行,再判断。无论while中的条件是否成立,都会执行一次循环体。

package javalearningday04;

/**
* do{}while();的用法
* @author 小川94
* @date 2018年1月31日
*/
public class DoWhileDemo { public static void main(String[] args) {
testMethod();
testMethod2();
} /**
* 计算1,2,3...,100的和
* 先执行,后判断
*/
public static void testMethod() {
int i = 1;
int sum = 0;
do{
sum += i;
i++;
}while(i<101);
System.out.println(sum); // sum = 5050
System.out.println(i); // i = 101
} /**
* do{}while();的循环结构,至少会执行一次循环体
* 在while中的条件不成立时,已经执行了一次循环体
*/
public static void testMethod2() {
int i = 1;
int sum = 0;
do{
sum += i;
i++;
}while(i<1);
System.out.println(sum); // sum = 1
System.out.println(i); // i = 2
}
}

3.3 while(){...}循环

先判断,再执行。只有条件成立,才会进入循环体。

package javalearningday04;

/**
* while(){}的用法
* @author 小川94
* @date 2018年1月31日
*/
public class WhileDemo { public static void main(String[] args) {
testMethod();
testMethod2();
} /**
* 计算1,2,3...,100的和
* 先判断,后执行
*/
public static void testMethod() {
int i = 1;
int sum = 0;
while( i<101 ){
sum += i;
i++;
}
System.out.println(sum); // sum = 5050
System.out.println(i); // i = 101
} /**
* 只有while()中的条件成立时,才会执行循环体
* 如果while()中的条件永久为true,则会进入死循环,对程序会造成非常严重的后果,
* 开发中需要严格判断循环条件!避免出现死循环
*/
public static void testMethod2() {
int i = 1;
int sum = 0;
while( i<1 ){
sum += i;
i++;
}
System.out.println(sum); // sum = 0
System.out.println(i); // i = 1
} }

3.4 独特的switch{}

package javalearningday04;

/**
* switch{}的用法
* @author 小川94
* @date 2018年1月31日
*/
public class SwitchCaseDemo { public static void main(String[] args) {
testMethodWithInt(3);
testMethodWithByte((byte)3);
testMethodWithChar((char)3);
testMethodWithShort((short)3);
testMethodWithString("MONDAY");
testMethodWithEnum(SIZE.MEDIUM);
testSwitchWithoutBreak("MONDAY");
} // 支持int
public static void testMethodWithInt(int num) {
switch (num) {
case 0:
System.out.println("num等于0");
break;
default:
System.out.println(num);
break;
}
} // 支持byte
public static void testMethodWithByte(byte num) {
switch (num) {
case 0:
System.out.println("num等于0");
break;
default:
System.out.println(num);
break;
}
} // 支持char
public static void testMethodWithChar(char num) {
switch (num) {
case 0:
System.out.println("num等于0");
break;
default:
System.out.println(num);
break;
}
} // 支持short
public static void testMethodWithShort(short num) {
switch (num) {
case 0:
System.out.println("num等于0");
break;
default:
System.out.println(num);
break;
}
} // 支持字符串
public static void testMethodWithString(String str) {
switch (str) {
case "MONDAY":
System.out.println("是星期一");
break;
default:
System.out.println(str);
break;
}
} public enum SIZE{
// 小号
SMALL,
// 中号
MEDIUM,
// 大号
LARGE;
} public SIZE size; public SwitchCaseDemo(SIZE size) {
this.size = size;
}
// 支持枚举类型
public static void testMethodWithEnum(SIZE size) {
switch (size) {
case SMALL:
System.out.println("是小号");
break;
case MEDIUM:
System.out.println("是中号");
break;
case LARGE:
System.out.println("是大号");
break;
default:
System.out.println("没有其他号了");
break;
}
} // 不写break语句,则每种情况都会执行
public static void testSwitchWithoutBreak(String str) {
switch (str) {
case "MONDAY":
System.out.println("吃包子");
case "SUNDAY":
System.out.println("吃面条");
default:
System.out.println("喝粥");
}
} // 不支持long类型的数据
/*public static void testMethodWithLong(long num) {
switch (num) {
case 0:
System.out.println("num等于0");
break;
default:
System.out.println(num);
break;
}
}*/ // 不支持double类型的数据
/*public static void testMethodWithDouble(double num) {
switch (num) {
case 0:
System.out.println("num等于0");
break;
default:
System.out.println(num);
break;
}
}*/
}

四、中断循环

中断循环需要用到两个关键字,一是continue,另一个是break。

continue是指将其后面的执行语句跳过,进入下一次新的循环,整个循环结构是还在运行的,没有终止。

break是指结束掉整个循环结构,开始执行整个循环结构的后面的代码。

package javalearningday04;

/**
* continue、break的用法
* @author 小川94
* @date 2018年1月31日
*/
public class ContinueBreakDemo { public static void main(String[] args) {
testContinue();
testBreak();
} /**
* 求数组中正数的和
* continue:在执行完continue语句后,其后的代码都不再执行,
* 结束本次循环,进入下一次循环,整个循环结构还在继续执行
*/
public static void testContinue() {
int[] arr = {1,2,3,4,-5,6};
int sum = 0;
for(int i=0; i<arr.length; i++){
if (arr[i]<0) { //过滤数组中的负数
continue;
} else {
sum += arr[i];
}
}
// 跳过-5,计算1+2+3+4+6的和
System.out.println(sum); // sum = 16
} /**
* break:在执行完break语句后,其后的代码都不再执行,
* 结束整个循环结构,
*/
public static void testBreak() {
int[] arr = {1,2,3,4,-5,6};
int sum = 0;
for(int i=0; i<arr.length; i++){
if (arr[i]<0) {
break; // 与上面的代码一样,只是将continue换成了break
} else {
sum += arr[i];
}
}
// 只会计算1+2+3+4的和
System.out.println(sum); // sum = 10
}
}

上面的代码都上传至了GitHub,地址是https://github.com/XiaoChuan94/javalearning/tree/master/javalearningday04,有需要的可以去下载观看,如果喜欢就给个star吧!如有不足,欢迎下方留言交流。

文章首发于我的个人公众号:悦乐书。喜欢分享一路上听过的歌,看过的电影,读过的书,敲过的代码,深夜的沉思。期待你的关注!

公众号后台输入关键字“Java学习电子书”,即可获得12本Java学习相关的电子书资源,如果经济能力允许,还请支持图书作者的纸质正版书籍,创作不易。

Java入门(五):控制流程的更多相关文章

  1. JAVA入门基础及流程控制

    JAVA入门基础及流程控制 数据类型 位 存储单位 eg:0001 0011 八位 字节 byte 处理数据单位 一字节等于八位 eg:1b=0011 0001 类变量: static int num ...

  2. java(运算符,控制流程语句,函数 )

    运算符 数据类型转换: 小数据类型-------->大数据类型(自动类型转换) 大数据类型--------->小数据类型(强制类型转换) 强制类型转换的格式: 小数据类型  变量名 = ( ...

  3. Java入门教程三(流程控制)

    概述 程序有 3 种结构:顺序结构.选择结构和循环结构.分别为:if elseswitch case,while与do while,for, foreach,return,break ,continu ...

  4. 【Java】【控制流程】

    #栗子 丢手帕 & 菱形 & 金字塔import java.io.*;import java.util.*; public class Test_one { public static ...

  5. java语句的控制流程

    if(布尔表达式 ){ 程序执行语句1 }else { 程序执行语句2 } while(布尔表达式){ 程序执行语句 } do{ 程序执行语句 }while(布尔表达式); for(初始化语句,条件语 ...

  6. 【Thinking in Java, 4e】控制流程执行

    p46~p75: [迭代] 1.Java不允许将数字作为布尔值用. 1.有点意思的小程序WhileTest. public class WhileTest { static boolean condi ...

  7. 【JAVA零基础入门系列】Day8 Java的控制流程

    什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等.举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下 ...

  8. java基础-控制流程语句

    一 前言 周末睡觉好舒服,都不想动了,就想睡睡,晒晒太阳,作者劳碌命还是过来写文章了.基础系列文章已经已经出到控制流程,感觉也挺快的,我很自信全网没都多少系列文章能有我这基础系列写的这么好,易于初学者 ...

  9. 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程

    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...

随机推荐

  1. VRF在区块链中的应用

    最近区块链领域流行了一种"怪病",许多区块链项目或者设计方案都加入了一个叫做VRFs的算法.那么, (1) 什么是VRFs? (2) VRFs在区块链中解决了什么问题? 本文旨在介 ...

  2. linux的文档和目录结构

    在Linux底下,所有的文件与目录都是由根目录开始,是目录与文件的源头,然后一个个的分支下来,如同树枝状,因此称为这种目录配置为:目录树. 目录树的特点是什么呢? 目录树的起始点是根目录(/,root ...

  3. 对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过文氏图 Venn diagrams 解释了SQL的Join。我觉得清楚易懂,转过来。

     对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codi ...

  4. Git中的"pull request"真正比较的是什么?

    前言 利用git版本控制工具时,我们通常会从主分支拉出新分支进行开发,开发完成后创建pr(也就是pull request),让其他小伙伴帮忙review,确定代码没有问题后再将新分支合并到主分支上.但 ...

  5. Netty实战六之ChannelHandler和ChannelPipeline

    1.Channel的生命周期 Interface Channel定义了一组和ChannelInboundHandler API密切相关的简单但功能强大的状态模型,以下列出Channel的4个状态. C ...

  6. java——初识

    java是现在最火的高级编程语言之一,功能强,应用广. java可以做什么? 1. 开发桌面应用程序 2. 开发面向Internet的应用程序 开发java程序的基本步骤: 1. 编写源程序:mypr ...

  7. SpringBoot打包报错没有主清单

    1,如果你的POM是继承spring-boot-starter-parent的话,只需要下面的指定就行. <properties> <!-- The main class to st ...

  8. HTML空格符号 nbsp; ensp; emsp; 介绍以及实现中文对齐的方法

    一:不同空格符合的区别   半角的不断行的空白格(推荐使用)    半角的空格    全角的空格 详细的含义:  :这是我们使用最多的空格,也就是按下space键产生的空格.在HTML中,如果你用空格 ...

  9. Elasticsearch Elasticsearch入门指导

    Elasticsearch入门指导 By:授客 QQ:1033553122 1. 开启elasticsearch服务器 1 2. 基本概念 2 <1> 集群(Cluster) 2 < ...

  10. Android性能优化问题总结

    性能优化这块,分为UI性能优化.内存优化.数据库优化.网络优化.耗电优化等等.可以从1.如何发现问题,2.怎么解决问题,3.解决效果对比,这几个方面去描述.举个简单例子——UI优化,可以从 UI出现什 ...