通过使用条件语句、循环语句可以实现流程的控制。

3.8.1 块作用域(Block Scope)

块(Block)就是由一对花括号包围起来的部分。他指定了一个变量的生存范围,与一个方法的操作范围。 Java中不允许在嵌套块中重复定义变量。

3.8.2 条件语句

if (condition) statement

{
statement 1
statement 2
. . .
}
if (yourSales >= target)
{
performance = "Satisfactory";
bonus = 100 + 0.01 * (yourSales - target);
}
else
{
performance = "Unsatisfactory";
bonus = 0;
}
if (yourSales >= 2 * target)
{
performance = "Excellent";
bonus = 1000;
}
else if (yourSales >= 1.5 * target)
{
performance = "Fine";
bonus = 500;
}
else if (yourSales >= target)
{
performance = "Satisfactory";
bonus = 100;
}
else
{
System.out.println("You're fired");
}

3.8.3  循环语句

1.while 循环

while (condition) statement

while (balance < goal)
{
balance += payment;
double interest = balance * interestRate / 100;
balance += interest;
years++;
}
System.out.println(years + " years.");

2.do-while 循环

do statement while (condition); 注意有;。

do
{
balance += payment;
double interest = balance * interestRate / 100;
balance += interest;
year++;
// print current balance
. . .
// ask if ready to retire and get input
. . .
}while (input.equals("N"));

3.8.4 固定次数循环(Determinate loop)

1.for循环

for (int i = 10; i > 0; i--)
System.out.println("Counting down . . . " + i);

3.8.5 多重选择 Switch 语句

Scanner in = new Scanner(System.in);
System.out.print("Select an option (1, 2, 3, 4) ");
int choice = in.nextInt();
switch (choice)
{
case 1:
. . .
break;
case 2:
. . .
break;
case 3:
. . .
break;
case 4:
. . .
break;
default:
// bad input
. . .
break;
}

Case 标签(即Switch后跟的变量类型)可以是:

•  char , byte , short ,  int 及其包装类的常量表达式
• 枚举类型
• 从Java SE 7开始支持string 字面值。

String input = . . .;
switch (input.toLowerCase())
{
case "yes": // OK since Java SE 7
. . .
break;
. . .
}

3.8.6 跳出循环

1.虽然Java保留的goto关键字,但是不推荐使用goto语句。一般使用break跳出循环。Java支持带标签的break语句,用于跳出多重循环。相当于给每个循环起个名字,跳出时可以指定跳出哪个循环。

label:
{
. . .
if (condition) break label; // exits block
. . .
}
// jumps here when the break statement executes

示例如下:

while (years <= 100)
{
balance += payment;
double interest = balance * interestRate / 100;
balance += interest;
if (balance >= goal) break;
years++;
}
Scanner in = new Scanner(System.in);
int n;
read_data:
while (. . .) // this loop statement is tagged with the label
{
. . .
for (. . .) // this inner loop is not labeled
{
System.out.print("Enter a number >= 0: ");
n = in.nextInt();
if (n < 0) // should never happen—can't go on
break read_data;
// break out of read_data loop
. . .
}
}

2.continue 语句

跳出本次循环

CoreJavaE10V1P3.8 第3章 Java的基本编程结构-3.8 控制流程(Control Flow)的更多相关文章

  1. CoreJavaE10V1P3.5 第3章 Java的基本编程结构-3.5 操作符

    最基本的操作为赋值操作,= 即赋值操作符 基本的算术操作为加.减.乘.除取模.除取余数,其对应操作符为 +.-.*./.% 算术操作与赋值操作联合衍生为:+=:-=:*=:/=:%=: 由于处理器硬件 ...

  2. CoreJavaE10V1P3.10 第3章 Java的基本编程结构-3.10 数组(Arrays)

    数组是存储同一类型数据的数据结构 数组的声明与初始化 int[] a; int a[]; int[] a = new int[100]; int[] a = new int[100]; for (in ...

  3. CoreJavaE10V1P3.9 第3章 Java的基本编程结构-3.9 大数值(Big Numbers)

    如果基本的整型与浮点型不能满足需求,可以使用java.Math包提供的 BigInteger 和 BigDecimal 两个类,这两个类可以存储任意长度的数, BigInteger 实现的任意精度整数 ...

  4. CoreJavaE10V1P3.7 第3章 Java的基本编程结构-3.7 输入输出(Input ,Output)

    3.7.1 读取输入 Scanner in = new Scanner(System.in); System.out.print("What is your name? "); S ...

  5. CoreJavaE10V1P3.6 第3章 Java的基本编程结构-3.6 字符串 String

    String类(java.lang.String)就是Unicode字符序列,例如:"Java\u2122" 3.6.1 Substring 提取子串 String greetin ...

  6. CoreJavaE10V1P3.4 第3章 Java的基本编程结构-3.4 变量

    1.在Java中,每一个变量都必须有一个类型,在变量声明是,类型必须在变量名之前.示例如下: double salary; int vacationDays; long earthPopulation ...

  7. CoreJavaE10V1P3.3 第3章 Java的基本编程结构-3.3 数据类型

    3.3 数据类型 这里所说的数据类型是指 Java的8中基本数据类型,是原生就存在的. 不同进制数的字面值表示方法 进制 字面值表示方法 例子 是否默认 JDK版本支持 2进制 0b或0B前缀(每4位 ...

  8. CoreJavaE10V1P3.2 第3章 Java的基本编程结构-3.2 注释

    3.2 注释 1. //形式注释 System.out.println("We will not use 'Hello, World!'"); // is this too cut ...

  9. CoreJavaE10V1P3.1 第3章 Java的基本编程结构-3.1 Java 最简程序

    3.1Java最简程序 FirstSample.java public class FirstSample { public static void main(String[] args) { Sys ...

随机推荐

  1. Forget Java to learn Javascript from 0.--Day 1

    The first day,when I read 'we need practice so we need a Javascript Interpreter.','Every browser has ...

  2. c#跟objective-c语言特性

    c#跟objective-c语言特性的对比 拿c#语言跟objective-c做个对比,记录下自己认为是差不多的东西. 学过objc的人相信对category这个东西肯定不陌生,它可以让我们在没有源码 ...

  3. XHTML

    XHTML 是 HTML 与 XML(扩展标记语言)的结合物. XHTML 包含了所有与 XML 语法结合的 HTML 4.01 元素. 最主要的不同: XHTML 元素必须被正确地嵌套. XHTML ...

  4. CLR中的垃圾回收机制

    CLR中采用代(generation)来作为其垃圾回收的一种机制,其唯一的目的是提升程序的性能.基予代的垃圾回收器有以下假设: ·对象越新,其生存周期越短. ·对象越老,其生存周期越长. ·回收堆的一 ...

  5. Binder机制,从Java到C (大纲)

    转载请标注:张小燕:http://www.cnblogs.com/zhangxinyan/p/3487381.html 前段时间一直在看有关Binder机制的内容,觉得受益匪浅,整理记录于此,大家请随 ...

  6. 【转】在iOS开发中使用FMDB

    本文转载自:唐巧的博客 在iOS开发中使用FMDB APR 22ND, 2012 前言 SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.iO ...

  7. Day1:T1 模拟 T2 拓扑排序

    T1:模拟 自己第一天的简直跟白痴一样啊...模拟都会打错.. 当时貌似在更新最大值的时候打逗比了... if((sum[x]==max && x<maxh) || sum[x] ...

  8. Nginx反向代理实现Tomcat多个应用80端口访问

    应用背景 一般我们在开发时,一个工程里会有多个Web应用,比如一个前台一个后台,那我们就需要配置2个Tomcat服务器,比如一个是http://localhost:8080,一个是http://loc ...

  9. github 出现 Permission denied (publickey)的解决

    从github上clone的时候出现了以下错误 应该是ssh key过期了,试着重新创建ssh key,按以下步骤 1.  注意短横线前后都没有空格 接着一切都默认,它会在把ssh key 储存在 C ...

  10. 高级SQL特性

    SQL   SQL 必知必会·笔记<20>高级SQL特性 摘要: 约束(constraint)就是管理如何插入或处理数据库数据的规则.DBMS通过在数据库表上施加约束来实施引用完整性.1. ...