在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. man exportfs(exportfs命令中文手册)

    本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html exportfs() System Manager's Manual exportfs ...

  2. μC/OS-II 信号量集

    简介 在实际应用中,任务常常需要与多个事件同步,即要根据多个信号量组合作用的结果来决定任务的运行方式.μC/OS-II 为了实现多个信号量组合的功能定义了一种特殊的数据结构--信号量集. 信号量集所能 ...

  3. shell编程基础(三): 位置参数与shell脚本的输入输出

    一.位置参数和特殊变量 有很多特殊变量是被Shell自动赋值的,我们已经遇到了$?和$1,现在总结一下: 常用的位置参数和特殊变量: $0 相当于C语言main函数的argv[0] $1.$2... ...

  4. spark之scala程序开发(本地运行模式):单词出现次数统计

    准备工作: 将运行Scala-Eclipse的机器节点(CloudDeskTop)内存调整至4G,因为需要在该节点上跑本地(local)Spark程序,本地Spark程序会启动Worker进程耗用大量 ...

  5. [React] immutable.js

    //Map() 原生object转Map对象 (只会转换第一层,注意和fromJS区别) immutable.Map({name:'danny', age:18}) //List() 原生array转 ...

  6. SQL命令入门。

    1.创建数据库:create database  ***: 2.删除数据库:drop database ***: 3.创建数据库的时候设置一些参数选项. create database MyDatab ...

  7. 第一册:lesson thirty five。

    原文: Our village . This is a photograph of our village. Our village is in  a valley. It is between to ...

  8. C#实现多态之接口。

    一.什么是接口? 接口就是一种规范协议,约定好遵守某种规范就可以写通用的代码. 定义了一组具有各种功能的方法(只是一种能力,没有具体实现,就像抽象方法一样,“光说不做”). 理解:内存该做成什么样的: ...

  9. python - unittest 单元测试学习

    单元测试 单元测试是用来对一个模块.一个函数或者一个类进行正确性检验的测试工作 比如对Python中的abs 的测试 输入正数: 比如 1, 2, 3, 返回值不变 输入负数: 比如 -1, -2, ...

  10. 讲讲网络模块中加解密那点儿事--AES+BASE64

    本篇文章已授权微信公众号 dasuAndroidTv(大苏)独家发布 这次想来讲讲网络安全通信这一块,也就是网络层封装的那一套加密.解密,编码.解码的规则,不会很深入,但会大概将这一整块的讲一讲. 之 ...