Java 選擇與循環結構詳細教程


一、選擇結構(6種)

1、單分支if語句

if(condition){

  statements;

}

如果布爾表達式condition的值為真,則執行statements語句,否則轉到if結構后的語句執行。

例1

package com.baidu.czy;

import java.util.Scanner;

public class CheckNumber {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入一個整數:");
        int num = sc.nextInt();
        if (num % 5 == 0 && num % 6 == 0){ System.out.println(num + "能被5和6同時整除"); } if (num % 5 == 0 || num % 6 == 0){ System.out.println(num + "能被5或6整除"); } if (num % 2 == 0 ^ num % 6 == 0){ System.out.println(num + "只能被5或6整除"); }

    }
}

2、雙分支if-else語句

例2

import java.util.Scanner;
public class AdditionQuiz {
    public static void main(String[] args) {
        int number1 = (int)(Math.random()*10);         // [0.0-1.0)
        int number2 = (int)(Math.random()*10);
        System.err.print(number1 + "+" + number2 +"=");
        Scanner input = new Scanner(System.in);
        int answer = input.nextInt();
        if(answer ==(number1+number2)){ System.out.println("恭喜你,答對了!"); }else{ System.out.println("很遺憾,答錯了!"); System.out.println(number1 +"+"+number2 +"="+(number1+number2)); }
    }

}

3、嵌套的if語句和多分支的if-else語句

例3

package com.baidu.czy;

import java.util.Scanner;
/*
1、成員變量:無需初始化。
成員變量無需初始化,系統在創建實例的過程中默認初始化。

補充:以final修飾的成員變量。必須顯性的初始化賦值。

2、 方法里面的形參變量: 無需初始化。
Java類方法,屬於按值傳遞機制,調用方法的時候,完成參數的傳遞,相當形參被初始化。

3、局部變量:必須初始化。
與成員變量不同,局部變量必須顯示初始化,才能夠使用。
 */

public class ScoreLevel {
    public static void main(String[] args) {

        String level = null;
        Scanner sc = new Scanner(System.in);
        System.out.print("請輸入成績:");
        double score = sc.nextDouble();
        if (score > 100 || score < 0){ System.out.println("輸入成績不正確。"); }else if (score >= 90){ level = "優秀"; }else if (score >= 80){ level = "良好"; }else if (score >= 70){ level = "中等"; }else if (score >= 60){ level = " 及格"; }else { level = "不及格"; }
        System.out.println("你的成績等級為:" + level);
    }
}

4、條件運算符

條件運算符是Java唯一的三元運算符

condition ?  expression1 : expression2

如果condition為真,則執行expression1,否則執行expression2

5、switch語句結構

switch(expression){

  case value1:

    statements     [break];

    case value2:

    statements     [break];

  . . . . .  . . . .. 

  [default:

   statements ]

}

注意:

(1)expression是一個表達式,它的值必須是byte、short、int、char、String、enum,同時expression類型必須與value的類型相匹配。

(2)break語句是可選項,計算expression的值與case的值進行匹配,若匹配,則執行case子句后面的語句,直到遇到break語句為止;

  若都不匹配,則執行default語句塊;若既都不匹配又沒有default語句,則直接跳出switch結構。

例4

package com.baidu.czy;

import java.util.Scanner;

public class SwitchDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入年份:");
        int  year = sc.nextInt();
        System.out.println("請輸入月份:");
        int month = sc.nextInt();
        int numDays = 0;
        switch (month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9:case 11: numDays = 30; break; case 2: if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){ numDays = 29; }else { numDays = 28; } break; default: System.out.println("月份非法"); break; }
        System.out.println("該月的天數為:"+numDays);

    }
}

二、循環結構(4種)

1、while循環(“當循環”)

一般用在循環次數不確定的情況下

package com.baidu.czy;

import java.util.Scanner;

public class GuessNumber {
    public static void main(String[] args) {
        //隨機產生100~200的數
        int magic = (int)(100 + Math.random() * 101);
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入你猜的數:");
        int guess = sc.nextInt();
        while (guess != magic){ if(guess > magic){ System.out.println("您猜大了"); }else { System.out.println("您猜小了"); } //進入到下一次
            guess = sc.nextInt(); }
        System.out.println("恭喜你,答對了!\n該數是:"+magic);
    }
}

2、do-while循環(“直到型”循環)

與while循環的區別是,do-while至少執行一次循環體。

import java.util.Scanner;
public class DoWhileDemo {
    public static void main(String[] args) {
       double sum = 0,avg = 0;
       int n = 0;
       double number;
       Scanner input = new Scanner(System.in);
       do{ System.out.print("請輸入一個數(輸0結束):"); number = input.nextDouble(); if(number != 0){ sum = sum + number; n = n + 1; } }while(number!=0);
       avg = sum / n;
       System.out.println("sum = "+ sum);
       System.out.println("avg = "+ avg);
    }
}

3、for循環

一般用在循環次數固定的情況下

例    打印九九乘法表

public class NineTable {

    public static void main(String[] args) {
        for(int i = 1; i < 10; i++){ for(int j = 1; j <=i; j++){ System.out.print(i +"*"+j + "="+i*j + "  "); }
            System.out.println();
        }
    }
}

 注意:for循環的一部分或全部可為空,但是分號不能省略。

如   for( ;  ;  ){

}

4、增強的for循環

主要用於對數組和集合元素的迭代

一般格式

for(type  identifier: expression){

  //循環體

}

該循環的含義:對expression(數組或集合)中的每個元素identifier,執行一次循環體中的語句。

       type指數組或集合中的元素類型;expression必須是一個數組或集合的對象。

例如:用增強的 for循環實現求數組marks中各元素的和

double sum = 0;

for(double score:marks){

  sum = sum + score;

}

使用增強型for循環的局限性:只能順序訪問數組或集合的元素。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM