zoukankan      html  css  js  c++  java
  • java基础(5)--流程控制结构

    流程控制结构

    if结构

    当关系表达式为true时,执行语句

     if(关系表达式){
        //语句块
     }

    if-else结构

    当关系表达式为true时,执行语句块1,否则执行语句块2

    if(关系表达式){
      //语句块1
    }else{
      //语句块2
    }

    if-else嵌套

    if(表达式1){
      //语句块1
    }else if(表达式2){
      //语句块2
    }else if(表达式3){
      //语句块3
    }else….

    switch结构

    switch(整数表达式){
     case 条件1:...;break;
     case 条件2:...;break;
     default:...;break;
    }

    使用switch时有如下注意点

    1. switch(表达式)  只能是整数表达式(int byte char short),switch不能处理long或其他类型。

    2. case条件只能是整数常量(int byte char short),不能是变量或者表达式。

    3. case条件的内容可以为空,如果为空,则继续执行之下代码。

    4. default表示如果没有满足case的条件的其它一切情况。

    5. 别忘记写break,会出现”渗透”  (一直执行接下来的代码,直到遇到break或者本代码块执行错误)

    for 循环

    处理周期性,重复处理的功能。for 大多用于处理 与 次数有关的循环

    for(表达式1;表达式2;表达式3){
       //语句块;
    }

    while结构

    while(boolean表达式){
      // 语句块;
    }

    当boolean表达式为true时,执行语句块;否则退出循环。while与for结构可以互换。while(true)等价于for(;;){}

    do-while结构

    do{
      //语句块;
    }while(boolean表达式);

    当boolean表达式为true时,执行语句块。否则退出循环。do-while与while结构的区别在于:如果循环条件一开始就不满足时,while结构不会执行循环体;而d-while结构会执行一次循环体。

    注意点

    1)尽量使用肯定条件,减少使用否定条件,目的是避免思考误区,减少逻辑错误。

    2)减少嵌套层次,一般不要超过。目的是避免思考误区,减少逻辑错误。

    3)注意缩进和括号配对!成对写括号,对齐格式以后,在括号中间添代码,如果要删除(注释掉)一定成对的括号删除。

    4)适当的减少使用else(否则的情形)

     总之:要保持代码的简洁,和很好的可读性。理想的代码要接近自然语言。

    多路分支

    if else  if  else

    switch case

    1)if else if else 判断条件灵活适应广泛。

    2)switch case 条件必须是整数(byte short char int)。使用限制多,但性能好于if else

    3)在工作中 if else使用的更多些。

    循环流程

    for  while  do--while

    for:“经典的用法”是与次数有关的循环。循环时候:i=0 1 2 ... n-1 共计 n 次循环 for(int i=0; i<n; i++){}   其中 i 是 index(序号)的缩写

    while: “经常”处理与次数无关的循环

    for 和 while 可以相互替换

    1) while 可以处理 次数 循环,但是没有 for方便

    2) for(; 循环条件 ;) 与 while(循环条件) 等价

    3) for(;;) 与 while(true) 等价,都是死循环

    4) 只使用for循环可以处理任何循环逻辑

    5) 在不能明确循环结束条件时候,可以先使用死循环。在适当的时候 使用 break 结束循环

    6) do while 循环  适合循环结束条件在循环体最后的循环流程

    continue

    continue语句在循环体中,用于结束本次循环而开始下次循环。

    break

    break用于退出当前语句块。break用在循环体中用于退出循环。

    案列

    字符串对齐

    public static void print(String str){
        int count = 8 - str.length();
        for(int i=0; i<count; i++){
            System.out.print(" ");
        }
        System.out.println(str);   
    }    

    输出 1000 以内的所有质数 (素数),素数:一个数(>=2)只能被自身和1整除的数。如何判断一个数是否是质数?如果一个数除了1 和自身以外,有“约数”就不是质数了!  如 6 = 3 * 2, 6 就不是 质数

    如何查找:24 的约数,如果有约数范围一定是:2 ~ <=24/2

    for(int n=2;n<=1000;n++){
        boolean isPrime=true;
        for(int i=2;i<=n/2;i++){
             if(n%i==0){
                isPrime=false;
                break;
            }
        }
         if(isPrime){
            System.out.println(n+"是质数");
        }
    }                                    

    输出一个数的全部约数,1 和自身除外

    public static void get(int n) {
      for(int i = 2; i < n / 2; i++){
         if(n % i == 0){
            System.out.println(i);
          }
       }
    }

    反转一个整数 num = 37195  结果:59173

    int num = 37195;
    int sum = 0;
    while(num != 0){
        int last = num % 10;
        sum = sum * 10 + last;
        num = num / 10;
    }
    System.out.println(sum);

    求PI = 4 * (1/1-1/3 + 1/5-1/7 + 1/9-1/11 ... ) 值

    double sum = 0;
    for(long i = 1; i < 500000000L; i += 4){
        sum += 1.0 / i - 1.0 / (i + 2);
    }
    double pi = sum * 4;
    System.out.println(pi);

    找到 100 ~ 999 之间的全部水仙花数(3位自幂数)。如153=1*1*1+5*5*5+3*3*3; 153是首先花数

    for(int n = 100; n <= 999; n++){
      int num = n;
       int sum = 0;
       do{
         int last = num % 10;
          sum += last * last * last;// 3次方和
          num /= 10;
       }
       while(num != 0);
       if(sum == n){
         System.out.println(n + "是水仙花数");
       }
    }

    猜数字游戏

    数据分析的前提是业务规则

    数据分析: num 是被猜测数字  answer 是用户猜的答案  count 猜测的次数

    计算方法(计算过程):

    1) 随机生成 num 范围 1~100  (如果要生成100-200之间的数可以这样写:nextInt(100)+100

    2) 提示用户猜测数据

    3) 得到猜测答案 answer

    4) 比较用户answer 和 num  4.1 计分 count++  4.2 如果相等就结束 游戏  4.3 提示大/小 

    5) 返回 (2)

    int num;
    int answer;
    int count = 0;
    Scanner in = new Scanner(System.in);
    Random random = new Random();
    num = random.nextInt(100) + 1;
    System.out.println("亲,欢迎使用猜数字游戏!(*_^)");
    for(;;){
      System.out.print("猜吧:");
       answer = in.nextInt();
       count++;
       if(num == answer){
         System.out.println("(@_@)对了!分" + count);
          break;
       }
       if(answer > num){
         System.out.println("猜大了!次数:" + count);
       }
       else{
          System.out.println("猜小了!次数:" + count);
       }
    }
  • 相关阅读:
    Cocos2d-x 学习笔记(11.1) MoveBy MoveTo
    Cocos2d-x 学习笔记(10) ActionInstant
    Cocos2d-x 学习笔记(9) Action 运行原理
    Cocos2d-x 学习笔记(8) ActionManager
    Cocos2d-x 学习笔记(7) 内存管理 Sprite SpriteFrame Texture2D
    Cocos2d-x 学习笔记(6) Sprite SpriteFrameCache Texture2D TextureCache
    常见串口术语区分
    串口调试
    Linux
    缓冲区
  • 原文地址:https://www.cnblogs.com/qin-derella/p/6547450.html
Copyright © 2011-2022 走看看