美文网首页
3.8控制流程

3.8控制流程

作者: 十六只猴子王 | 来源:发表于2019-03-11 16:24 被阅读0次

    javahi用条件语句和循环结构来控制流程

    • break语句可以带标签,可以利用它实习从内层跳出的目的
    • 当需要对某个表达式的多个值进行检测时,可以使用switch语句

    块作用域

    块(即复合语句)指由一堆大括号括起来的若干条简单java语句,不能嵌套两个块中声明同名的变量

    条件语句

    if (condition) statement
    在java中,更一般的田间语句格式是
    if (condition) statement1 else statement2

    if(yourSales>=target)
    {
      performance = "Satisfactory";
      bonus = 100 + 0.01 * (yourSales - target);
    }
    else
    {
      performance ="Unstaisfactory";
      bonus  = 0;
    }
    
    • else字句与最邻近的if构成一组

    循环

    当条件为true时,while循环执行一条语句格式为
    while(condition) statement

    • 开始循环条件的值就是false,则while循环提一次也不执行
      要多久才能够存储一定数量的退休金
    import java. util.*;
    public class Retirement
    {
       public static void main(String[] args)
       {
          // 读取输入
          Scanner in = new Scanner(System.in);
    
          System.out.print("How much money do you need to retire? ");
          double goal = in.nextDouble();
    
          System.out.print("How much money will you contribute every year? ");
          double payment = in.nextDouble();
    
          System.out.print("Interest rate in %: ");
          double interestRate = in.nextDouble();
    
          double balance = 0;
          int years = 0;
    
          // 未达到目标时更新帐户余额
          while (balance < goal)
          {
             // add this year's payment and interest
             balance += payment;
             double interest = balance * interestRate / 100;
             balance += interest;
             years++;
            // 增加了一个计数器,并在循环中更新当前的累积数量
          }
    
          System.out.println("You can retire in " + years + " years.");
       }
    }
    

    循环体的代码有可能不被执行。如果希望至少执行一次则使用do/while循环语句,格式为
    do statement while (condition);

    import java.util.*;
    public class Retirement2
    {
       public static void main(String[] args)
       {
          Scanner in = new Scanner(System.in);
    
          System.out.print("How much money will you contribute every year? ");
          double payment = in.nextDouble();
    
          System.out.print("Interest rate in %: ");
          double interestRate = in.nextDouble();
    
          double balance = 0;
          int year = 0;
    
          String input;
    
          // 用户尚未准备注销时更新帐户余额
          do
          {
             // add this year's payment and interest
             balance += payment;
             double interest = balance * interestRate / 100;
             balance += interest;
    
             year++;
    
             // 打印当前余额
             System.out.printf("After year %d, your balance is %,.2f%n", year, balance);
             //格式化输出
             // 询问是否准备好注销并获得输入
             System.out.print("Ready to retire? (Y/N) ");
             input = in.next();
          }
          while (input.equals("N"));
       }
    }
    

    确定循环

    for循环语句时支持迭代的一种通用结构,利用每次迭代之后跟新的计数器或类似的变量来控制迭代的次数。
    for语句的第一部分通常用于对计数器的初始化;第二部分给出每次新一轮循环执前检测的循环条件;第三部份指示如何更新计数器

    • for语句的三个部分应该对同一计数器变量进行初始化、检查和更新。
    • 小心浮点数是否相等问题;
      for (doule x = 0;x! = 10;x+=0.1)
      可能永远不会结束,由于舍入的误差,最终可能得不到精确的值,因为0.1无法精确的用二进制表示,所以x将从9.999999999998调到10.09999999999998.
      内部定义的一个变量,这个变量就不能在循环之外使用。如果希望在循环之外使用,就要确保这个变量在循环语句以前且在外声明。

    计算抽奖中奖的改路

    import java.util.*;
    public class LotteryOdds
    {
       public static void main(String[] args)
       {
          Scanner in = new Scanner(System.in);
    
          System.out.print("How many numbers do you need to draw? ");
          int k = in.nextInt();
    
          System.out.print("What is the highest number you can draw? ");
          int n = in.nextInt();
    
        /*
       *计算二项式系数n*(n-1)*(n-2)*…(n-k+1)/(1*2*3*…*k)
      */
    
          int lotteryOdds = 1;
          for (int i = 1; i <= k; i++)
             lotteryOdds = lotteryOdds * (n - i + 1) / i;
    
          System.out.println("Your odds are 1 in " + lotteryOdds + ". Good luck!");
       }
    }
    
    • 如果从n个数字中抽取k个数字,可以使用
      n * (n-1) * (n-2)*…(n-k+1)/(1 * 2 * 3 * … * k)

    foreach

    for(元素类型t 元素变量x : 遍历对象obj){
    引用了x的java语句;
    }

    多重选择 :switch语句

    switch 语句将从与选项匹配的case便签处开始执行直到遇到break语句,或者执行到switch语句的结束处为止,如果没有匹配的case便签,遇到default子句,就执行这个子句
    case便签可以是:

    • 类型为char、byte、short或int的常量表达式
    • 枚举常量
    • 可以是字符串字面量

    中断控制流程语句

    *break语句,标签必须放在希望跳出的最外层循环之前,并且必须紧跟一个冒号

    • continue: 中断正常的控制流程,将控制转移到最内层循环的首部
      还有一种带便签的continue,将跳到与便签匹配的循环首部

    相关文章

      网友评论

          本文标题:3.8控制流程

          本文链接:https://www.haomeiwen.com/subject/uenrpqtx.html