零基础学Java(6)控制流程

火影  金牌会员 | 2022-8-27 14:38:21 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 869|帖子 869|积分 2607

控制流程

与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流程。
 
块作用域

我们首先要了解块(block)的概念。
块是指由若干条Java语句组成的语句,并用一对大括号括起来。块确定了变量的作用域。一个块可以嵌套在另一个快中。下面就是嵌套在main方法块中的一个块。
  1. public static void main(String[] args) {
  2.         int n = 1;
  3.         {
  4.             int k = 3;
  5.             System.out.println(k); // success
  6.         }  // k只在这个块中被定义
  7.         System.out.println(k);  // error
  8.     }
复制代码
但是,不能在嵌套的两个块中声明同名的变量,否则就会有错误,无法通过编译:
  1. public static void main(String[] args) {
  2.         int n = 1;
  3.         {
  4.             int k = 3;
  5.             int n = 2;
  6.         }
  7.     }
复制代码
这里已经在外面定义了n,就不能再嵌套的块中再定义n了。
 
条件语句

在Java中,条件语句的形式为
  1. if (condition) statement
复制代码
这里的条件必须用小括号括起来。剩下的跟其他语言语法几乎一直,直接看以下例子
  1. import java.util.Scanner;
  2. public class SecondSample {
  3.     public static void main(String[] args) {
  4.         /*
  5.         * 根据销售额来评价你的表现,奖励你不同的金额
  6.         * */
  7.         // 创建输入对象
  8.         Scanner in = new Scanner(System.in);
  9.         System.out.println("请输入你的销售额");
  10.         // 在控制台输入你的销售额
  11.         int yourSales = in.nextInt();
  12.         // 定义一个目标
  13.         int target = 1000;
  14.         // 初始化表现
  15.         String performance;
  16.         // 初始化奖金
  17.         int bonus;
  18.         if (yourSales >= 2 * target) {
  19.             performance = "优秀";
  20.             bonus = 1000;
  21.             System.out.printf("你的表现为%s,奖励你%d元%n", performance, bonus);
  22.         } else if (yourSales >= 1.5 * target) {
  23.             performance = "良好";
  24.             bonus = 500;
  25.             System.out.printf("你的表现为%s,奖励你%d元", performance, bonus);
  26.         } else if (yourSales >= target) {
  27.             performance = "及格";
  28.             bonus = 100;
  29.             System.out.printf("你的表现为%s,奖励你%d元", performance, bonus);
  30.         } else {
  31.             System.out.println("You 're fired");
  32.         }
  33.     }
  34. }
复制代码
 
while循环

当条件为true时,while循环执行下一条语句。一般形式如下:
  1. while (condition) statement
复制代码
我们设定一个程序,计算需要多长时间才能够存储一定数量的退休金,假定每年存入相同数量的金额,而且利率是固定的。
  1. import java.util.Scanner;
  2. public class ThirdSample {
  3.     public static void main(String[] args) {
  4.         /*
  5.         * 计算需要多长时间才能够存储一定数量的退休金
  6.         * */
  7.         Scanner in = new Scanner(System.in);
  8.         System.out.println("你需要多少退休金?");
  9.         double goal = in.nextDouble();
  10.         System.out.println("你每年将增加多少钱?");
  11.         double payment = in.nextDouble();
  12.         System.out.println("利率是多少:");
  13.         double interestRate = in.nextDouble();
  14.         double balance = 0;
  15.         int years = 0;
  16.         // 未达到目标时更新帐户余额
  17.         while (balance < goal) {
  18.             // 加上今年的付款和利息
  19.             balance += payment;
  20.             double interest = balance * interestRate / 100;
  21.             balance += interest;
  22.             years++;
  23.         }
  24.         System.out.printf("你可以在%d年内退休", years);
  25.     }
  26. }
复制代码
while循环是先判断后执行,如果条件不满足则永远是false,那么可能永远不会执行,如果我们想无论条件是否为true,我们都要先执行一条语句,那么在Java中提供了do..while...这种循环形式。
  1. do statement while (condition)
复制代码
下面的例子中,首先计算退休账户中的新的余额,然后再询问是否打算退休:
  1. public class ThirdSample {
  2.     public static void main(String[] args) {
  3.         Scanner in = new Scanner(System.in);
  4.         System.out.println("你每年将增加多少钱?");
  5.         double payment = in.nextDouble();
  6.         System.out.println("利率是多少?");
  7.         double interestRate = in.nextDouble();
  8.         double balance = 0;
  9.         int year = 0;
  10.         String input;
  11.         do {
  12.             balance += payment;
  13.             double interest = balance * interestRate / 100;
  14.             balance += interest;
  15.             year++;
  16.             System.out.printf("%d年后,你的余额为%,.2f%n", year, balance);
  17.             System.out.println("准备退休?(Y/N)");
  18.             input = in.next();
  19.         }
  20.         while (input.equals("N"));
  21.     }
  22. }
复制代码
 
for确定循环

  for循环语句是支持迭代的一种通用结构,由一个计数器或类似的变量控制迭代次数,每次迭代后这个变量将会更新。
[code]for (int i=1; i
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表