控制执行流程——《Java编程思想》学习笔记

1.true and false

  • 所有条件语句都利用条件表达式的真假来决定执行路径

2. if-else

  • 控制程序流程的最基本形式

3.迭代

语句会重复执行,直到表达式得到false的结果为止

  • while 循环刚开始,会计算一次布尔表达式的值,在语句的下一次迭代开始前会再次计算一次.

格式:
while(Boolean-expression)
statement

  • do-while
  • for

do-while

格式:
do statement
while(Boolean-expression);

while与do-while唯一区别:do-while至少执行一次

for

格式:
for(initialization; Boolean-expression; step)
statement

初始化表达式initialization,布尔表达式Boolean-expression,步进step都可以为空


练习4-素数

//
    for (int i = 1; i < 500; i++) {
      int factors = 0;
      for (int j = 1; j < (i + 2) / 2; j++) {
        if ((i % j) == 0) factors++;
      }
      if (factors < 2) System.out.println(i + "是素数");
    }

逗号操作符

  • 在java中唯一用到它的是在for循环的控制表达式中
  • 在控制表达式的初始化和步进控制部分,可以使用一系列由逗号分隔的语句,这些语句均会独立执行
 for(int i = 1, j = i + 10; i < 5; i++, j = i * 2) {
      System.out.println("i = " + i + " j = " + j);
    }
/* Output:
i = 1 j = 11
i = 2 j = 4
i = 3 j = 6
i = 4 j = 8*/

4.foreach语法

 	Random rand = new Random(47);
    float f[] = new float[10];
    for(int i = 0; i < 10; i++)
      f[i] = rand.nextFloat();
    for(float x : f)
      System.out.println(x);
 /* Output:
0.72711575
0.39982635
0.5309454
0.0534122
0.16020656
0.57799757
0.18847865
0.4170137
0.51660204
0.73734957
*/

5.return

用法:

  • 一个方法的返回值(没有void返回值)
  • 退出当前方法并返回值

6.break和continue

  • break强行退出循环,不执行循环中剩余语句
  • continue停止执行当前的迭代,开始下一次迭代

7.goto

  • java中没有goto,但是goto仍是java的保留字
  • 起源于汇编语言
  • goto语句是源码级别上的跳转

适用于for以及while的规则

  1. 一般的continue会退回最内层循环的开头(顶部),并继续执行
  2. 带标签的continue会到达标签的位置,并重新进入紧接在哪个标签后面的循环
  3. 一般的break会中断并跳出当前循环
  4. 带标签的break会中断并跳出标签所指的循环

8.switch

语法:
switch(integral-selector) {
case integral-value1 : statement; break;
case integral-value2 : statement; break;
case integral-value3 : statement; break;
case integral-value4 : statement; break;
case integral-value5 : statement; break;
// …
default: statement;
}

  • 省略break会继续执行后面的case语句,直到遇到break为止

练习:

斐波那契数列
public class FibonacciExercise9 {
  int fib(int n) {
    if(n < 2) return 1;
    return (fib(n - 2) + fib(n - 1));
  }

  public static void main(String[] args) {
    FibonacciExercise9 f = new FibonacciExercise9();
    int k =10;
    System.out.println("First " + k + " Fibonacci number(s): ");
    for(int i = 0; i < k; i++)
      System.out.println(f.fib(i));
  }
}
吸血鬼数字

public class VampireNumbersExercise10 {
  static int a(int i) {
    return i / 1000;
  }

  static int b(int i) {
    return (i % 1000) / 100;
  }

  static int c(int i) {
    return ((i % 1000) % 100) / 10;
  }

  static int d(int i) {
    return ((i % 1000) % 100) % 10;
  }

  static int com(int i, int j) {
    return (i * 10) + j;
  }

  static void productTest(int i, int m, int n) {
    if (m * n == i) System.out.println(i + " = " + m + " * " + n);
  }

  public static void main(String[] args) {
    for (int i = 1001; i < 9999; i++) {
      productTest(i, com(a(i), b(i)), com(c(i), d(i)));
      productTest(i, com(a(i), b(i)), com(d(i), c(i)));
      productTest(i, com(a(i), c(i)), com(b(i), d(i)));
      productTest(i, com(a(i), c(i)), com(d(i), b(i)));
      productTest(i, com(a(i), d(i)), com(b(i), c(i)));
      productTest(i, com(a(i), d(i)), com(c(i), b(i)));
      productTest(i, com(b(i), a(i)), com(c(i), d(i)));
      productTest(i, com(b(i), a(i)), com(d(i), c(i)));
      productTest(i, com(b(i), c(i)), com(d(i), a(i)));
      productTest(i, com(b(i), d(i)), com(c(i), a(i)));
      productTest(i, com(c(i), a(i)), com(d(i), b(i)));
      productTest(i, com(c(i), b(i)), com(d(i), a(i)));
    }
  }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值