在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. vue_drf之视频接口

    一.vue-video 1,安装依赖 npm install vue-video-player --save 2,main.js文件中加载组件 require('video.js/dist/video ...

  2. [Redux] redux的概述

    redux 的概述 随着 javascript 单页应用的不断发展,javascript 需要管理比以往都要多的状态,管理不断变化的 state 非常困难,数据流动不断变的模糊不可预测,代码的开发与维 ...

  3. React Fiber源码分析 第二篇(同步模式)

    先附上两张流程图 1.scheduleRootUpdate  这个函数主要执行了两个操作  1个是创建更新createUpdate并放到更新队列enqueueUpdate, 1个是执行sheculeW ...

  4. 多选穿梭框总结 (vue + element)

    博客地址:https://ainyi.com/23 示例 介绍 实现省市区三级多选联动,可任选一个省级.市级.区级,加入已选框,也可以在已选框中删除对应的区域. 选择对应仓库,自动勾选仓库对应的省,取 ...

  5. iOS 快速排序

    一.快速排序概念及其思想 快速排序(QuickSort),又称为交换排序,是分治算法的一种,快速排序采用分治的策略. 1.分治法的基本思想: 将原问题分解为若干个规模更小但结构和原问题相似的子问题.递 ...

  6. 第一次:lesson eighty seven。

    原文: A car crash. A:Is my car ready yet? B:I don't know sir,what's the number of your car? A:It's LFZ ...

  7. EntityFramework(1)基础概念与Database First

    基本概念 EntityFramework是微软推出的一款ORM工具,关于ORM的概念请参考博客https://www.cnblogs.com/huanhang/p/6054908.html.这篇文章对 ...

  8. sql-索引的作用(超详细)

    (一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(nonc ...

  9. Codeforces Round #304 (Div. 2) -----CF546

    A. Soldier and Bananas   A soldier wants to buy w bananas in the shop. He has to pay k dollars for t ...

  10. react-conponent-hellocynthia

    <!DOCTYPE html> <html> <head> <script src="../../build/react.js">& ...