Day04JavaSE——流程控制 & 方法

Day04JavaSE——流程控制 & 方法

条件语句

if条件语句

switch语句

if条件语句

if语句的条件式一定是一个结果为布尔类型的表达式,if语句分为if-else语句和if-else if-else多分支语句

if-else语句
  • if-else结构的语句
    • 形式一:if(布尔类型结果的表达式){需要执行的代码}
    • 形式二:if(条件){条件为真的情况处理}else{条件为假的情况处理}
    • 求出两个数字最大值

      求出和打印不是一个概念

语法:
if(boolean表达式){
	语句序列
}
Created with Raphaël 2.2.0 start verification yes or no? 代码1 End 代码2 yes no
 //键盘录入三个数,并求出三个数的最大值

import java.util.Scanner;
public class sequence {
    public static void main(String[] args) {
       
        //调用Scnner键盘输入包,打出这句代码IDEA会自动调用Scnner包
        //第3行代码就是调用Scnner包,但是其他第三方记事本需要你自行将第一句代码写出来
        Scanner sc = new Scanner(System.in);
        //在屏幕上提示用户输入第一个整数
        System.out.println("请输入第一个整数");
        //将用户输入的第一个整数赋值给新定义变量i1
        //若用户输入的是字符串,则需要定义变量类型为string
        int i1 = sc.nextInt();
        System.out.println("请输入第二个整数");
        int i2 = sc.nextInt();
        System.out.println("输入第三个整数");
        int i3 = sc.nextInt();
        int max1 = i1 > i2 ? i1 : i2;
        int max2 = max1 > i3 ? max1 : i3;
        System.out.println("最大值为" + max2);
    }
}

键盘录入三个数,并求出三个数的最大值流程图

Created with Raphaël 2.2.0 start 调用Scnner包,并声明输入变量缓存区名称为sc 界面输出提醒用户输入第一个变量 将输入的第一个整数赋值给i1 输入整数i2,i3并定义整数变量max1,max2 i1>i2? max1=i1; max1>i3? max2=max1; 输出max2为最大值 end max2=i3; max1=i2; yes no yes no
  • 三元表达式与if,else区别

    能用三元表达式写出来的,一定可以用if,else写出来
    能用if,else写出来的不一定能用三元表达式写出来

多条件选择语句
语法:
       if(条件1){
                代码1
        }else if(条件2){
                代码2
        }else if(条件3){
                代码3
                }else{
                代码4}

流程图

Created with Raphaël 2.2.0 start 相关变量定义及相关包的调用 条件1? 代码1; end 条件2? 代码2; 条件3? 代码3; ……? ……; 条件n? 代码n yes no yes no yes no yes no yes
 //根据成绩范围,输出优良中差

public class sequence {
    public static void main(String[] args) {
        //根据成绩范围,输出优良中差
        Scanner sc=new Scanner(System.in);
		System.out.println("请输入分数");
		int score=sc.nextInt();
		if(score>=90 & score<=100){
			System.out.println("A等");
		}else if(score>=80&score<90){
			System.out.println("B等");
		}else if(score>=70&score<80){
			System.out.println("C等");
		}else if(score>=60&score<70){
			System.out.println("D等");
		}else if(score<60){
			System.out.println("E等");
		}
    }
}
Created with Raphaël 2.2.0 start 调用Scnner包,并声明输入变量缓存区名称为sc 界面输出提醒用户输入分数 int score=sc.nextInt(); score>=90 & score<=100? 输出A等; end score>=80 & score<90? 输出B等 score>=70 & score<80? 输出C等 score>=60 & score<70? 输出D等 score<60? 输出E等 yes no yes no yes no yes no yes

switch多分支语句

语法:
switch(表达式){
	case 常量值1:
		语句1:
		break;
	case 常量值2:
		语句2:
		break;
	case 常量值3:
		语句3:
		break;
		
		…………………………
		
	case 常量值n:
		语句n:
		break;
	default:
		语句n+1;
		break;
}
Created with Raphaël 2.2.0 start 相关变量定义及相关包的调用 条件1? 代码1; end 条件2? 代码2; 条件3? 代码3; ……? ……; 条件n? 代码n default 代码n+1 yes no yes no yes no yes no yes no yes
  • switch注意的事项

    switch语句所支持的类型,byte short int char JDK1.5之后,支持枚举类型
    switch表示这是switch语句
    表达式的取值:byte,short,int,char
    JDK5以后可以是枚举(什么是枚举,以后再讲)
    JDK7以后可以是String
    JDK1.7 之后执行 字符串类型
    case 匹配项:case 后面只能写常量,不能写变量
    多个case的值不能出现重复的值
    多个case项 数据类型一致
    default: 所有case项都没有匹配上,那就执行默认项
    default: 不是必须要提供的,也不是说一定要放在最后面,放在哪了都行,但是无论放在哪里,default一定是其他条件都不符合的时候才执行
    break 中断,总用就是用来结束switch语句
    break 你忘了写,或着说你故意就不写。语法不报错 ,但是会发生一种现象,叫做case穿透,你可以利用这种现象

  • if与switch的区别

if(布尔类型)if是对布尔类型结果进行判断例如范围,常量

switch只能对某些常量进行判断,不能判断范围

//输入月份,对应生成什么季节,利用缺少break会穿透特性
import java.util.Scanner;

public class practice1 {
    public static void main(String[] args) {
        while(true){
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入月份");
            int month= sc.nextInt();
            switch(month){
                case 1:
                case 2:
                case 3:
                    System.out.println(month + "月是春季");
                    break;
                case 4:
                case 5:
                case 6:
                    System.out.println(month + "月是夏季");
                    break;
                case 7:
                case 8:
                case 9:
                    System.out.println(month + "月是秋季");
                    break;
                case 10:
                case 11:
                case 12:
                    System.out.println(month + "月是冬季");
                    break;
                default:
                    System.out.println("输入有误,请重新输入");
                    break;
            }
        }
    }
}
Created with Raphaël 2.2.0 start 相关变量定义及相关包的调用,读取用户输入赋值给month 月份等于1,2,3月? 输出春季; end 月份等于4,5,6月? 输出夏季; 月份等于7,8,9月? 输出秋季; 月份等于10,11,12月? 输出冬季; yes no yes no yes no yes

用if语句实现同样的功能

import java.util.Scanner;

public class practice2 {
    public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("Plesase input month");
            int month=sc.nextInt();
            if(month<=3){
                System.out.println(month + "月是春季");
            }else if(month<=6){
                System.out.println(month + "月是夏季");
            }else if(month<=9){
                System.out.println(month + "月是秋季");
            }else if(month<=12){
                System.out.println(month + "月是冬季");
            }else{
                System.out.println("输入有误,请重新输入");
            }
    }
}
Created with Raphaël 2.2.0 start 相关变量定义及相关包的调用,读取用户输入赋值给month month<=3? 输出春季; end month<=6? 输出夏季; month<=9? 输出秋季; month<=12? 输出冬季; yes no yes no yes no yes

循环语句

循环语句就是在满足一定条件的情况下反复执行某一个操作。Java中提供了3种常用的循环。

分别是while语句,do……while语句和for语句

for语句

语法
for(表达式1;表达式2;表达式3){
    语句序列
}
Created with Raphaël 2.2.0 start verification 表达式1; 表达式2 语句序列(循环体) 表达式3 end yes no

练习

//1-100之间的偶数和,奇数和
public class practice1 {
    public static void main(String[] args) {
        int add=0;
        int even=0;
        for (int i = 1; i < 101; i++) {
            if(i%2==0){
                even+=i;
            }else if(i%2!=0){
                add+=i;
            }
        }
        System.out.println("1-100之间的偶数和为" + even);
        System.out.println("1-100之间的奇数和为" + add);
    }
}
//计算1000以内的水仙花数
public class practice2 {
    public static void main(String[] args) {
        int count=0;
        for (int i = 100; i < 1000; i++) {
            if(i==(i/100)*(i/100)*(i/100)+(i/10%10)*(i/10%10)*(i/10%10)+(i%10)*(i%10)*(i%10)){
                System.out.println(i);
                count++;
            }
        }
        System.out.println("水仙花数共有"+count+"个");
        System.out.println(153/100);
        System.out.println(153%100/10);
        System.out.println(153%10);
    }
}

while语句

语法:
while(条件表达式){
	执行语句
}
Created with Raphaël 2.2.0 start 条件表达式 语句序列(循环体) end yes no
//用while实现1-100之间的偶数和,奇数和
public class practice2 {
    public static void main(String[] args) {
        int i=1;
        int add=0;
        int even=0;
        while(i<=100){
            if(i%2==0){
                even+=i;
                i++;
            }else if(i%2!=0){
                add+=i;
                i++;
            }
        }
        System.out.println("1-100之间的偶数和为" + even);
        System.out.println("1-100之间的奇数和为" + add);
    }
}
//用while实现水仙花数
public class practice2 {
    public static void main(String[] args) {
        int i=100;
        int flowerNumber=0;
        int flower=0;
        while(i<=999){
            double i1=Math.pow(i/100,3);
            double i2=Math.pow(i%100/10,3);
            double i3=Math.pow(i%10,3);
            if((i1+i2+i3)==i){
                System.out.println(i);
                flowerNumber++;
            }
            i++;
        }
        System.out.println(flowerNumber);
    }
}

Math函数的调用(上面代码中用过)

  • 平方根
    double x=4;
    double y=Math.sqrt(x);
    System.out.println(y);				//prints 2.0
    
  • 幂运算
    double y=Matn.pow(x,a);
    因为x,y都是double型变量,所以算幂结果也用double承载
    

    y=xa

  • 三角函数
    Math.sin
    Math.cos
    Math.tan
    Math.atan
    Math.atan2
    
  • 指数函数
    Math.exp
    Math.log
    Math.log10
    
  • pi和E
    Math.PI
    Math.E
    

调用数学函数包可以不用再方法名和常量名前加前缀“Math”,包调用方法如下

import static java.lang.Math.*;

使用:System.out.println(sqrt(PI));

do……while语句

语法:
do{
	执行语句
}while(条件表达式);
Created with Raphaël 2.2.0 start 语句序列(循环体) 条件表达式 end yes no
//用do-while输出1-10
public class practice3 {
    public static void main(String[] args) {
        int i=1;
        do{
            System.out.println(i);
            i++;
        }while(i<=10);
    }
}

三种循环结构的区别&死循环

(1)do...while循环至少执行一次循环体。
		而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
(2)如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。
	因为变量及早的从内存中消失,可以提高内存的使用效率。
	建议优先考虑for循环,然后是while循环 ,最后是do...while循环
(3)两种最简单的死循环格式
	while(true){...}
	for(;;){...}

循环控制语句

break语句

//打印2次java基础班
/*break的作用是跳出这个循环,直接开始执行下一个模块的语句*/
public class pracytice5 {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if(i%3==0){
                //break;
                System.out.println("java基础");
            }
            System.out.println("java基础");
        }
    }
}
//break语句还有一个作用就是跳出多层循环(几乎不使用)
/*要想实现这个效果,就必须知道一个东西;带标签的语句;
		格式:标签名:语句*/

continue语句

//打印7次java基础班
/*continue的作用也是跳出循环,只是continue是跳出本次循环,重新回到语句的判断条件部分重新执行下一次循环,而break是世界中断这个循环,不再执行本循环代码块,直接去执行下一块代码*/
public class pracytice5 {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if(i%3==0){
                continue;
                System.out.println("java基础");
            }
            System.out.println("java基础");
        }
    }
}

练习

public class pracytice5 {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if(i%3==0){
                //break;			//打印2次
                //continue;			//打印7次
               // System.out.println("java基础");			//打印13次
            }
            System.out.println("java基础");
        }
    }
}

循环嵌套练习

  • 使用双重循环实现输出正三角形,效果如下

img

public class practice1 {
    public static void main(String[] args) {
        for(int i=1;i<=4;i++){
            for(int j=i;j<4;j++){
                 System.out.print(" ");
            }
            for(int k=1;k<=i*2-1;k++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
  • 使用双重循环实现键盘输入行数,列数输出正三角形,效果如下

    img

    import java.util.Scanner;
    
    public class practice1 {
        public static void main(String[] args) {
            //根据键盘录入行数、列数,在控制台输出三角形的星星阵列
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入行数");
            int hang=sc.nextInt();
            System.out.println("请输入列数");
            int lie=sc.nextInt();
            output(hang);
        }
        public static void output(int i){
            for(i=1;i<=4;i++){
                for(int j=i;j<4;j++){
                    System.out.print(" ");
                }
                for(int k=1;k<=i*2-1;k++){
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
    
  • 根据键盘录入行数、列数,在控制台输出正方形的星星阵列
    import java.util.Scanner;
    
    public class practice1 {
        public static void main(String[] args) {
            //根据键盘录入行数、列数,在控制台输出正方形的星星阵列
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入行数");
            int hang=sc.nextInt();
            System.out.println("请输入列数");
            int lie=sc.nextInt();
            outputSquire(hang,lie);
        }
        public static void outputTriangle(int i){
            for(i=1;i<=4;i++){
                for(int j=i;j<4;j++){
                    System.out.print(" ");
                }
                for(int k=1;k<=i*2-1;k++){
                    System.out.print("*");
                }
                System.out.println();
            }
        }
        public static void outputSquire(int i,int j){
            for(int k=1;k<=i;k++){
                for(int h=1;h<=j;h++){
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
    
  • 根据键盘输入,打印乘法表
    import java.util.Scanner;
    
    public class practice {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入被乘数");
            int hang=sc.nextInt();
            outputTable(hang);
            /*//\t是转义字符 空一格TAB位
              //System.out.println();
              //\n是一个转义字符,是换行符
              System.out.print("\n");*/
        }
        //此处定义了一个方法
        public static void outputTable(int i) {
    
            for (int k = 1; k <= i; k++) {
                for (int j = 1; j <= k; j++) {
                    System.out.print(k + "*" + j + "=" + (k * j) + "  ");
                }
                System.out.println();
            }
        }
    }
    

方法&案例分析

public class Method {
    public static void main(String[] args) {
        //java中的方法就是封装一段功能逻辑,以实现代码的复用性(相当于C中的功能子函数)
        /*如何定义一个方法:
        * 1、仿照main方法建立方法
        * 2、方法定义在类中,方法与方法是平级关系,不能嵌套定义
        * 3、定义方法的语法:
        *       权限修饰符   状态修饰符   返回值类型   方法名(参数){方法体}
        *       public      static      void        send(){
        *           方法体,你要实现的功能逻辑代码
        *
        *       }
        * 4、方法不调用不执行,main由JVM自动调用;
        * 5、在main中调用方法:通过方法名直接调用*/
        add();
        add2();
        add3(5,6);
    }

    public static void add(){
        int a=20;
        int b=20;
        int sum=a+b;
        System.out.println("sum" + sum);
    }
    public static double add2() {
        int a=20;
        float b=20.111F;
        float sum=a+b;
        System.out.println("sum" + sum);
        //返回值,返回结果是否使用不是必须的,但是必须返回
        return sum;
    }
    public static int add3(int a,int b){


        return a+b;
    }
}
  • 返回值类型
    System.out.println("------------返回值类型------------");
            /*设计一个方法,计算两个数的和
            * 要在下面的代码中使用add方法执行计算的结果*/
            //返回值类型:void代表没有明确的返回值类型
            //若你的方法,要返回数据,那么你就要明确,你的方法,要返回什么样的类型数据
            //若你的方法,一旦明确了返回值类型,那么必须通过关键字return来带回与你声明的返回数据类型一致的值
            double r=add2();
            System.out.println(100 + r);
    
            System.out.println("------------返回return关键字------------");
            //return:结束方法,并返回
            //方法最后默认存在return
            //你的方法的返回值类型是void,return可以不写
    
  • 方法的参数设置
    System.out.println("---------------方法的参数设置---------------");
            /*语法:(数据类型 参数名,数据类型 参数名,……)
                形式参数               参数1      参数2
                public static int add(int a,    int b){
                      return a+b;
            }
    
            形参的作用:就是用来接收调用方法时,所传入的数据
            如果我们在调用方法时,方法需要参数,那我们就需要传入相应的参数
            参数类型和参数个数与方法定义的形参一致
            我们吧调用方法时,传入的参数,叫做实际参数,简称实参
            如果一个方法有返回值,我们可以输出调用,例如:
            System.out.println(add(i,j));
            这样做的前提是add方法有返回值
            以后我们设计方法需要考虑方法要不要返回值
            要不要参数,要几个参数,什么类型(两个明确)*/
            int i=200;
            int j=300;
            System.out.println(add3(i,j));
    
  • 方法的重载
    public class practice2 {
        public static void main(String[] args) {
            //求两个数相加的结果
            System.out.println(add(2,3));
            //求三个数相加的结果
            System.out.println(add(2,3,4));
            //求四个数相加的结果
            System.out.println(add(2,3,4,5));
            //允许一个类中出现多个同名方法,只要他们的形参个数或形参类型不一样即可
            //在调用时,会根据传入的参数个数和参数类型自动匹配
            //不会根据返回值类型区分,只与形参的个数或类型有关
        }
        public static int add(int a,int b) {
            return a+b;
        }
        public static int add(int a,int b,int c) {
            return a+b+c;
        }
        public static int add(int a,int b,int c,int d) {
            return a+b+c+d;
        }
    }
    

    方法重载概述

    在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同,与返回值无关。
    参数列表不同:参数个数不同, 参数类型不同

    简言之,在同一个类中,允许同名方法存在,但是必须以参数个数或者参数类型进行区分。

    方法案例分析

    //A:案例演示:	需求:根据键盘录入的数据输出对应的乘法表
    import java.util.Scanner;
    
    public class practice {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入被乘数");
            int hang=sc.nextInt();
            outputTable(hang);
            /*//\t是转义字符 空一格TAB位
              //System.out.println();
              //\n是一个转义字符,是换行符
              System.out.print("\n");*/
        }
        //此处定义了一个方法
        public static void outputTable(int i) {
    
            for (int k = 1; k <= i; k++) {
                for (int j = 1; j <= k; j++) {
                    System.out.print(k + "*" + j + "=" + (k * j) + "  ");
                }
                System.out.println();
            }
        }
    }
    
    /*案例演示
    	需求:根据键盘录入的行数和列数,在控制台输出星阵列*/
    import java.util.Scanner;
    
    public class practice1 {
        public static void main(String[] args) {
            //根据键盘录入行数、列数,在控制台输出星星阵列
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入行数");
            int hang=sc.nextInt();
            System.out.println("请输入列数");
            int lie=sc.nextInt();
            outputTriangle(hang);
            outputSquire(hang,lie);  
        }
        //此处为输出三角形星星阵列
        public static void outputTriangle(int i){
            for(i=1;i<=4;i++){
                for(int j=i;j<4;j++){
                    System.out.print(" ");
                }
                for(int k=1;k<=i*2-1;k++){
                    System.out.print("*");
                }
                System.out.println();
            }
            System.out.println();
        }
        //此处为输出正方形星星阵列
        public static void outputSquire(int i,int j){
            for(int k=1;k<=i;k++){
                for(int h=1;h<=j;h++){
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
    
    public class practice1 {
        public static void main(String[] args) {
            //根据键盘录入行数、列数,在控制台输出星星阵列
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入行数");
            int hang=sc.nextInt();
            System.out.println("请输入列数");
            int lie=sc.nextInt();
            outputTriangle(hang);
            outputSquire(hang,lie);  
        }
        //此处为输出三角形星星阵列
        public static void outputTriangle(int i){
            for(i=1;i<=4;i++){
                for(int j=i;j<4;j++){
                    System.out.print(" ");
                }
                for(int k=1;k<=i*2-1;k++){
                    System.out.print("*");
                }
                System.out.println();
            }
            System.out.println();
        }
        //此处为输出正方形星星阵列
        public static void outputSquire(int i,int j){
            for(int k=1;k<=i;k++){
                for(int h=1;h<=j;h++){
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值