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循环的局限性:只能顺序访问数组或集合的元素。

posted @ 2019-06-11 12:41  红尘年少  阅读(931)  评论(0编辑  收藏  举报