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