Java中的逻辑控制

前言:

本篇博客将为大家介绍Java中的逻辑控制。

目录

顺序结构

分支结构

if语句

switch语句

循环结构

while循环

break

continue

for循环

do while循环

输入输出

输出到控制台

从键盘输入



顺序结构

顺序结构非常简单,就是按照代码书写的顺序一行一行地往下执行。


分支结构

if语句

  • if(布尔表达式){……};

布尔表达式为true,则执行大括号里面的语句

  • if(布尔表达式){……}else{……};

如果布尔表达式为真,执行第一个大括号里面的语句,否则执行第二个大括号内的语句

  • if(布尔表达式1){……}else if(布尔表达式2){……}else{……};

如果布尔表达式1为真,执行第一个大括号内的语句;如果不为真,再看布尔表达式2是否为真,若为真,执行第二个大括号内的语句;如果仍旧为假,则执行第三个大括号内的语句举例:

  1. 判断一个数是正数、负数还是0:
    public class Main {
        public static void main(String[] args) {
           int num = 10;
           if(num > 0){
               System.out.println("该数是正数");
           }else if (num == 0){
               System.out.println("该数是0");
           }else{
               System.out.println("该数是负数");
           }
        }
    }
  2. 判断数是奇数还是偶数:
    public class Main {
        public static void main(String[] args) {
           int num = 10;
           if(num / 2 == 0){
               System.out.println("该数是偶数");
           }else{
               System.out.println("该数是奇数");
           }
        }
    }
  3. 判断一个年份是不是闰年:
public class Main {
    public static void main(String[] args) {
        int year = 1900;
        //判断一个数是否是闰年:
        //普通闰年:不是100的倍数,是4的倍数
        //世纪闰年:是100的倍数同时也要是400的倍数
        if (year % 100 == 0) {
            if (year % 400 == 0) {
                System.out.println("该年份为闰年");
            } else {
                System.out.println("该年份不是闰年");
            }
        } else {
            if (year % 4 == 0){
                System.out.println("该年份为闰年");
            }else {
                System.out.println("该年份不是润年");
            }
        }
    }
}

格式问题:

  1. 如果else、if里的大括号里只有一条语句,大括号是可以省略的,且else永远都是和离它最近的if配对的。但是如果是在if、else众多的情况下,还是尽量不要省略,因为谁和谁配对容易搞错,可以试着把上面判断闰年的代码的大括号去掉看一下。(悬垂else问题)
  2. 分号问题:如果在if()后面直接加上分号,分号就成为了if语句的语句体,而{……}中的代码就变成了和if无关的语句了
  3. 推荐两种else、if的写法:

更推荐第一种,代码更加紧凑。

switch语句

格式:

switch (表达式){
    case 常量1:{
        语句1;
        [break;]
    }
    case 常量2:{
        语句2;
        [break;]
    }
    ……
    default:{
        内容都不满足时执行的语句;
        [break;]
    }
}

执行顺序:

  • 先计算表达式的值
  • 和switch里面的case依次匹配,一旦和其中的一条匹配上就从那条开始执行,直到遇到break结束
  • 如果和所有的case语句都无法匹配上就执行default语句

举例:

根据day的值来输出星期:

{
        int day = 4;
        switch (day){
            case 1 :{
                System.out.println("周一");
                break;
            }
            case 2 :{
                System.out.println("周二");
                break;
            }
            case 3 :{
                System.out.println("周三");
                break;
            }
            case 4 :{
                System.out.println("周四");
                break;
            }
            case 5 :{
                System.out.println("周五");
                break;
            }
            case 6 :{
                System.out.println("周六");
                break;
            }
            case 7 :{
                System.out.println("周日");
                break;
            }
            default:{
                System.out.println("输入错误");
                break;
            }
        }
    }

注意事项:

  • 多个case后面的常量不可重复
  • switch后的括号只能是以下类型的表达式:
    • 基本类型: byte、char、short、int,不能是long、float、double类型
    • 引用类型:String常量类型、枚举类型
  • break不要随便遗漏,否则将失去“多分支选择”的效果。简单来说就是如果case的大括号语句中不写break语句,则计算机会接着执行下一条语句,不会跳出switch
  • switch不能表达复杂的条件(如大于10小于20)
  • switch虽然支持嵌套,但是不太美观,所以并不是很推荐使用

循环结构

while循环

while(循环条件){……};

循环条件为真,则执行大括号里的语句,否则循环结束

举例:

  1. 打印1-10的数字
  2. 计算1-100的和
  3. 计算5的阶乘
  4. 计算1!+2!+3!+4!+5!的和:

注意:while和if有很多相似之处:

  • 大括号中的语句只有一条的时候,大括号可以不写
  • while(循环条件)后面的大括号的左半边建议写在它后面,不要再另起一行了,这样使得代码更加紧凑
  • while(循环条件)后面不要直接写分号,不然会和if一样,使得循环无法正确执行

break

break的作用是让整个循环提前结束。

对比:

continue

continue的作用是跳出这次循环,立即进入下次循环。

for循环

for(表达式1;表达式2;表达式3){……};

表达式1:用于初始话循环变量初始值设置,在循环最开始的时候执行,只执行一次

表达式2:循环条件,为真循环继续,否则结束循环

表达式3:循环变量更新方式

举例:

  1. 打印1-10的数字
  2. 计算1-100的和
  3. 计算5!的值
  4. 计算1!+2!+3!+4!+5!的和

注意事项:

  • 和if、while一样,for后面的大括号可以省略,但是省略的时候大括号内只能有一条语句
  • 和if、while一样,for()后面也建议紧跟{,有助于代码的紧凑
  • 和if、while一样,for()后面不要直接跟分号,会使得循环无法正确执行
  • 和while一样,想要结束单趟循环用continue,想要结束整个循环用break

do while循环

do{……}while(循环条件);       

先执行一次大括号里面的代码,再判断是否满足while后小括号内的循环条件 ,满足则接着执行,否则循环结束

举例:

打印1-10:

注意:

  • while()后面的分号不要忘记
  • do-while语句很少用,更加推荐for和while循环

输入输出

输出到控制台

  1. System.out.println();……输出一个字符串,带换行
  2. System.out.print();……输出一个字符串,不换行
  3. System.out.printf();……格式化输出,和C语言的基本一样

格式化字符串:

从键盘输入

使用Scanner读取字符串、整数、浮点数

import java.util.Scanner;

public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name = scanner.nextLine();
        
        System.out.println("请输入你的年龄:");
        int age = scanner.nextInt();//nextInt()可以拿到整型

        System.out.println("请输入你的全部科目的平均分:");
        double avgGoal = scanner.nextDouble();//数据是什么类型,就用nextxxx()来输入该类型的数据,xxx表示类型


        System.out.println("你的信息如下:");
        System.out.println("name = "+name+", age = "+age+", avgGoal = "+ avgGoal);

        scanner.close();//调用关闭方法
    }
}

对于next()和nextLine():

大家可以通过对这篇博客的阅读来对这两个方法有更好的了解:

http://【[Java基础]Scanner中next()和nextLine()方法的使用和区别 - CSDN App】http://t.csdnimg.cn/mvE4e

使用Scanner循环读取N个数字,并求取其平均值:

import java.util.Scanner;

//使用Scanner循环读取N个数字,并求取其平均值
public class Demo2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int sum = 0;
        int count = 0;

        while (scanner.hasNextInt()){//hasNextInt()表示是否有下一个整数的意思(是xxx数据类型就用对应得hasNextxxx()方法
            int n = scanner.nextInt();
            sum += n;
            count++;
        }//这个循环中并未写让其停下来得条件,因为是自己通过键盘输入,所以HasNextInt()一直都会为真,这时候就要自己手动让它停下来
        //windows上为ctrl+z、Linux/Mac上为ctrl+d、IDEA上必须用ctrl+d
        double avg = sum/count;
        System.out.println(sum);
        System.out.println(avg);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值