【Java】逻辑控制

1.顺序结构

按照书写顺序,一步一步走

2.分支结构

2.1 if语句

if(判断条件){

        执行语句1;

}else if(判断条件){

        执行语句2;

}else{

        执行语句3;

}

tip:else会跟最近的if匹配
3个例题:
①判断一个数字是奇数还是偶数?
public static void main(String[] args) {
        int num = 10;
        if(num%2==0){
            System.out.println("该数为偶数");
        }else {
            System.out.println("该数为奇数");
        }
    }
②判断一个数字是正数,负数还是0? 
    public static void main(String[] args) {
        int num = 5;
        if(num>0){
            System.out.println("该数为正数");
        } else if (num<0) {
            System.out.println("该数为负数");
        }else {
            System.out.println("该数是0");
        }
    }
③判断一个年份是不是闰年?
 (是4的倍数且不是100的倍数或者是400的倍数)
    public static void main(String[] args) {
        int year = 2020;
        if ((year%400==0) || (year % 4 == 0 && year%100!=0)){
            System.out.println("该年份为闰年");
        }
    }

2.2switch语句

switch(表达式){

        case 目标值1:

                执行语句1;

                break;

        case 目标值2:

                执行语句2;

                break;

        .......

        case 目标值n:

                执行语句n;

                break;

        default:

                执行语句n+1;

                break;

}

不能做switch参数的数据类型有哪些?
基本数据类型: float  double  long   
int a = 1;
switch(a){
case 1:
    System.out.println("1");
    break;
case 2:
    System.out.println("2");
    break;
case 3:
    System.out.println("3");
    break;
default:
    break;
A.default的位置和省略
   a.位置:default不一定写在最下面,我们可以写在任意位置,只不过习惯会写在最下面。
   b.省略:default可以省略,语法没有问题,但是不建议省略。
B.case穿透
    break不能省略,否则会产生case穿透。
    执行流程:首先还是会拿着小括号中的表达式的值跟下面每一个case进行匹配。如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么就会结束整个switch语句。如果没有发现break,那么程序会继续执行下一个case的语句题,一直遇到break或者大括号为止。
    使用场景:如果多个case的语句重复了,就会用到case穿透。
C.switch新特性
需要更新到JDK14+
    省略了break,只有一行代码,大括号也可以省略。
    
D.switch和if的第三种格式的使用场景。
if的三种格式:一般用于对范围的判断
switch:把有限个个数一一列举出来,让我们任选其一。

3.循环结构

每个循环都是一个独立的个体。

3.1while循环

while(布尔表达式){
    循环体;
}
例子:
①打印1-10的数字。
 public static void main(String[] args) {
        int i = 0;
        while(i<10){
            i++;
            System.out.println(i);
        }
    }
死循环---》条件一直为真。
②5的阶乘
    public static void main(String[] args) {
        int n = 1;
        int num = 1;
        while(n<=5){
            num*=n;
            n++;
        }
        System.out.println(num);
    }

1!+2!+3!+4!+5!

   public static void main(String[] args) {
        int n = 1;
        int num = 1;
        int sum = 0;
        int j = 1;
        while (j <= 5) {
            while (n <= j) {
                num *= n;
                n++;
            }
            sum += num;
            j++;
        }
        System.out.println(sum);
    }

3.2break

功能是让循环提前结束。剩下多少趟都不会执行。
打印100-200中第一个三的倍数。
    //打印100-200中第一个三的倍数。
    public static void main(String[] args) {
        int i = 100;
        while(i<=200){
            if(i%3==0){
                System.out.println(i);
                break;
            }
            i++;
        }
    }

3.3continue

(跳过这次循环,进行下次循环。)

(continue后面的东西不会被执行)
例题:
找到100-200中三的倍数。
//打印100-200中三的倍数。
    public static void main(String[] args) {
        int i = 100;
        while(i<=200){
            if(i%3==0){
                System.out.println(i);
                i++;
                continue;
            }
            i++;
        }
    }
求出既能被3整除又能被4整除的数字。
    public static void main(String[] args) {
        int num = 100;
        while(num<=200){
            if(num%3==0&&num%4==0){
                System.out.println(num);
                num++;
                continue;
            }
            num++;
        }
    }

3.4for循环

for(表达式①;布尔表达式②;表达式③){
    表达式④
}
计算1-5的阶乘
    public static void main6(String[] args) {
        int sum = 0;
        for(int num = 1;num<=5;num++) {
            int ret = 1;
            for(int i = 1;i<=num;i++){
                ret = ret *i;
            }
            sum += ret;
        }
        System.out.println(sum);
    }

3.5do while循环

do{

        执行语句;

        ...;

}while(循环条件);

至少会循环一次。
例题:猜数字游戏
    public static void main(String[] args) {
        //初始化
        Scanner sc = new Scanner(System.in);
        //生成一个随机数
        int num = (int)(Math.random()*100+1);
        //记录猜了几次
        int count = 0;
        int guess;
        do{
            System.out.println("请输入猜测的数字(1-100):");
            guess = sc.nextInt();
            count++;
            if (guess>num){
                System.out.println("猜大了");
            }else if(guess<num){
                System.out.println("猜小了");
            }
        }while (guess!=num);
        System.out.println("猜对了,总共猜测总数为"+count);
    }

4.输入输出

4.1输出到控制台

 public static void main(String[] args) {
      Scanner scan = new Scanner(System.in);
      System.out.println("请输入你的姓名:");
      String name= scan.nextLine();//读入一行
      System.out.println("姓名:"+name);
    }
nextline 读入一行 next是遇到空格结束!
//单个数据的读入
import java.util.Scanner; // 需要导入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();//,nextline读入一行,next是遇到空格结束
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);sc.close(); 
// 注意, 要记得调用关闭
// 执行结果
请输入你的姓名:
张三
请输入你的年龄:
18
请输入你的工资:
1000
你的信息如下:
姓名 : 张三
年龄: 18
工资: 1000 . 0
多个数据的读入
使用 Scanner 循环读取 N 个数字,并求取其平均值
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int sum = 0;
        int num = 0;
        while (sc.hasNextInt()) {//是否有下一个数
            int tmp = sc.nextInt();
            sum += tmp;
            num++;
        } System.out.println("sum = " + sum);
        System.out.println("avg = " + sum / num);
        sc.close();
    }//使用ctrl+d结束,通常使用验证
// 执行结果
注意事项: 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl+ d).
  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值