控制流程
与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流程。
块作用域
我们首先要了解块(block)的概念。
块是指由若干条Java语句组成的语句,并用一对大括号括起来。块确定了变量的作用域。一个块可以嵌套在另一个快中。下面就是嵌套在main方法块中的一个块。- public static void main(String[] args) {
- int n = 1;
- {
- int k = 3;
- System.out.println(k); // success
- } // k只在这个块中被定义
- System.out.println(k); // error
- }
复制代码 但是,不能在嵌套的两个块中声明同名的变量,否则就会有错误,无法通过编译:- public static void main(String[] args) {
- int n = 1;
- {
- int k = 3;
- int n = 2;
- }
- }
复制代码 这里已经在外面定义了n,就不能再嵌套的块中再定义n了。
条件语句
在Java中,条件语句的形式为这里的条件必须用小括号括起来。剩下的跟其他语言语法几乎一直,直接看以下例子- import java.util.Scanner;
- public class SecondSample {
- public static void main(String[] args) {
- /*
- * 根据销售额来评价你的表现,奖励你不同的金额
- * */
- // 创建输入对象
- Scanner in = new Scanner(System.in);
- System.out.println("请输入你的销售额");
- // 在控制台输入你的销售额
- int yourSales = in.nextInt();
- // 定义一个目标
- int target = 1000;
- // 初始化表现
- String performance;
- // 初始化奖金
- int bonus;
- if (yourSales >= 2 * target) {
- performance = "优秀";
- bonus = 1000;
- System.out.printf("你的表现为%s,奖励你%d元%n", performance, bonus);
- } else if (yourSales >= 1.5 * target) {
- performance = "良好";
- bonus = 500;
- System.out.printf("你的表现为%s,奖励你%d元", performance, bonus);
- } else if (yourSales >= target) {
- performance = "及格";
- bonus = 100;
- System.out.printf("你的表现为%s,奖励你%d元", performance, bonus);
- } else {
- System.out.println("You 're fired");
- }
- }
- }
复制代码
while循环
当条件为true时,while循环执行下一条语句。一般形式如下:- while (condition) statement
复制代码 我们设定一个程序,计算需要多长时间才能够存储一定数量的退休金,假定每年存入相同数量的金额,而且利率是固定的。- import java.util.Scanner;
- public class ThirdSample {
- public static void main(String[] args) {
- /*
- * 计算需要多长时间才能够存储一定数量的退休金
- * */
- Scanner in = new Scanner(System.in);
- System.out.println("你需要多少退休金?");
- double goal = in.nextDouble();
- System.out.println("你每年将增加多少钱?");
- double payment = in.nextDouble();
- System.out.println("利率是多少:");
- double interestRate = in.nextDouble();
- double balance = 0;
- int years = 0;
- // 未达到目标时更新帐户余额
- while (balance < goal) {
- // 加上今年的付款和利息
- balance += payment;
- double interest = balance * interestRate / 100;
- balance += interest;
- years++;
- }
- System.out.printf("你可以在%d年内退休", years);
- }
- }
复制代码 while循环是先判断后执行,如果条件不满足则永远是false,那么可能永远不会执行,如果我们想无论条件是否为true,我们都要先执行一条语句,那么在Java中提供了do..while...这种循环形式。- do statement while (condition)
复制代码 下面的例子中,首先计算退休账户中的新的余额,然后再询问是否打算退休:- public class ThirdSample {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- System.out.println("你每年将增加多少钱?");
- double payment = in.nextDouble();
- System.out.println("利率是多少?");
- double interestRate = in.nextDouble();
- double balance = 0;
- int year = 0;
- String input;
- do {
- balance += payment;
- double interest = balance * interestRate / 100;
- balance += interest;
- year++;
- System.out.printf("%d年后,你的余额为%,.2f%n", year, balance);
- System.out.println("准备退休?(Y/N)");
- input = in.next();
- }
- while (input.equals("N"));
- }
- }
复制代码
for确定循环
for循环语句是支持迭代的一种通用结构,由一个计数器或类似的变量控制迭代次数,每次迭代后这个变量将会更新。
[code]for (int i=1; i |