逻辑控制和方法

目录

一、顺序结构

二、分支结构

2.1if语句

2.2switch语句

2.3while循环

2.4break and continue

2.5for循环

2.6输出函数print、printf、println

2.7键盘输入Scanner

三、方法

3.1方法定义

形参和实参

void

3.2方法重载

3.3方法标签

3.4方法递归


一、顺序结构

按代码编写顺序一行一行执行

二、分支结构

2.1if语句

严格使用布偶表达式,不能出现if(1)这种

if(布偶表达式){
}else if(布偶表达式){
}else{
}

悬垂问题,

if()
    if()
        System.out.println("aaa");
else
    System.out.println("bbb");

if,else 不加大括号只能有一条语句,此时else与最近的一个if对应

在书写时尽量加上大括号。

2.2switch语句

switch (表达式){
        case 值1: 
           ...
           break;
        case 值2: 
           ...
           break;
        default:
            ... 
           break;
        }

*多个case 后值不能重复

*switch括号内表达式只能是

(1)基本数据类型:byte ,short ,int ,char

(2)引用类型:String ,枚举类型

*没有break,不会停止,继续逐条语句执行。

2.3while循环

while(布偶表达式){
   
    循环语句
}

eg计算 1!+2!+3!...+n!

        int n=3;
        int sum=0;
        int num=1;
        //外层求和
        while(num<=n){
            int i=1;
            int tmp=1;
            //计算阶乘
            while(i<=num){
                tmp*=i;
                i++;
            }
            sum+=tmp;
            num++;
        }
        System.out.println(sum);

2.4break and continue

两者都用于循环

break :让一层循环提前结束

eg

continue :不实现continue下面代码,继续循环

2.5for循环

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

}

表达式1:循环前执行一次

表达式2:布偶表达式,循环是否继续判断条件

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

eg 1!+2!+...n!

        int n=4;
        int sum=0;//计算阶乘和
        int tmp=1;//计算阶乘
        for (int i = 1; i <= n; i++) {
            tmp*=i;
            sum+=tmp;
        }
        System.out.println(sum);

2.6do{}while

do{

}while(布偶表达式);

先执行内部语句,再判断是否继续循环

2.6输出函数print、printf、println

System.out.print(1);//不带换行
System.out.printf(format,msg);//格式化输出 与c语言基本一致
System.out.println(mas);//输出一个字符串带换行

2.7键盘输入Scanner

使用Scanner

(1)导入 import java.util.Scanner; // 需要导入 util

写Scanner 自动导入,或者选中Scanner     alt+enter

2)创建 Scanner对象

        Scanner scanner=new Scanner(System.in);

(3)通过对象调用函数

        Scanner scanner=new Scanner(System.in);
        String name=scanner.nextLine();//输入字符串
        int age=scanner.nextInt();//数人int整数

*使用nextLine 必须在nextInt类方法之前,nextLine特定的机制

后面要读字符串可以使用next方法,但是建议先读取字符串在读数字。

eg输入n个数字求和

        Scanner scanner=new Scanner(System.in);
        int sum=0;
        while(scanner.hasNextInt()){
            int n=scanner.nextInt();
            sum+=n;
        }
        System.out.println(sum);

*idea  ctrl+D结束循环

三、方法

减少重复性代码,便于管理代码

3.1方法定义

修饰符 返回值 方法名(参数值){
方法体
[return ...;]
}

eg.判断闰年

    public static boolean isLeapYear(int year){
        if((year%4==0&&year%100!=0)||year%400==0){
            return true;
        }
        return false;
    }

*static 修饰 静态方法不用实例化对象就能调用

*没有方法声明一说

*一次书写多次调用

形参和实参

方法接收参数为形参,传的值为实参

*形参是实参的临时拷贝,改变形参值不改变实参。

*如果实参是引用对象,可以通过形参对象修改实参对象中的内容。 与地址->内容

void

无返回值时必须写

3.2方法重载

函数名相同,参数类型不同,或者参数个数不同,或者不同类型的顺序不同,与返回值无关

eg

    public void fun(int x,int y){
        
    }
    public void fun(int x,double y){
        
    }
    public void fun(double y,int x){
        
    }
    public void fun(int x,int y,int z){
        
    }

四个都构成重载,传入不同参数,使用对应函数

*统一函数名,便于同一同一行为操作不同数据。

3.3方法标签

同一作用域,不能有相同的标识符。

*但是类存在方法重载

3.4方法递归

递归:方法中为满足条件调用方法自己

1.拆分为单层

2.递归出口

eg.n的阶乘

    public static int factor(int n){
        if(n==1){
            return 1;//出口
        }
        return n*factor(n-1);
    }

*每次调用会开辟函数栈帧,浪费空间,简单代码尽量不使用函数递归。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值