Java 流程控制

Java 流程控制

在这里插入图片描述

用户交互Scanner

Scanner对象

在这里插入图片描述


next();

next();

  1. 一定要读取到有效字符后才可以结束输出
  2. 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉
  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
  4. !!next() 不能得到带有空格的字符串!!
package Java流程控制.scanner;

import java.util.Scanner;

public class Demo1 {

	public static void main(String[] args) {
		
		//创建一个扫描仪对象,用于接收键盘数据
		Scanner sc = new Scanner(System.in);
		 
		System.out.println("使用next方法接收:");
		
		//判断用户有没有输入字符串
		if(sc.hasNext()) {
			//使用next方式接收
			String str = sc.next();
			System.out.println("输入的内容是:"+str);
		}
		
		//凡是属于IO流的类如果不关闭会一直占用资源,要养成好的习惯用完就关掉
		sc.close();
	}

}

结果在这里插入图片描述


nextLine();

nextLine();

  1. 以Enter为结束符,也就是说 nextLine() 方法返回的是输入回车之前的所有字符
  2. 可以获得空白
package Java流程控制.scanner;

import java.util.Scanner;

public class Demo2 {

	public static void main(String[] args) {
		
		//	从键盘接收数据
		Scanner sc = new Scanner(System.in);
		
		System.out.println("使用nextLine方式接收:");
		
		//	判断是否还有输入
		if(sc.hasNextLine()) {
			//使用nextLine方式接收
			String str = sc.nextLine();
			System.out.println("输入的内容是:"+str);
		}
		
		//关闭Scanner
		sc.close();
	}

}

结果:在这里插入图片描述


判断输入数据的数据类型
package Java流程控制.scanner;

import java.util.Scanner;

public class Demo4 {

    public static void main(String[] args) {

        //调用扫描仪,接收键盘数据
        Scanner scanner = new Scanner(System.in);

        int i = 0;
        float f=0.0f;
        System.out.println("请输入:");
        //判断输入的是否为整数
        if (scanner.hasNextInt()){
            //把输入的 int 值赋值给 i
            i = scanner.nextInt();
            //如果 i 为整数则输出下面语句
            System.out.println("输入的整数是:"+i);
        }else {
            //如果 i 不为整数则输出下面语句
            System.out.println("输入的不是整数,请重新输入");
        }
        //Scanner没有结束,继续往下走
        System.out.println("请输入小数:");
        //判断输入的是否为小数
        if(scanner.hasNextFloat()){
            //把输入的 float 值赋值给 f
            f = scanner.nextFloat();
            //如果 f 为小数则输出下面语句
            System.out.println("输入的小数为:"+f);
        }else{
            //如果 f 不为小数则输出下面语句
            System.out.println("输入的不是小数");
        }
        //关闭Scanner
        scanner.close();
    }

}


计算多个数据的总和与平均值
package Java流程控制.scanner;

import java.util.Scanner;

public class Demo5 {

    public static void main(String[] args) {
        System.out.println("请输入:");
        //我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
        Scanner scanner = new Scanner(System.in);

        //总和
        double sum = 0;
        //计算输入了几个数字
        int i = 0;

        //通过循环判断是否还有输入,并在里面对每一次进行求和和统计
        while (scanner.hasNextDouble()){
            double d = scanner.nextDouble();
            i++;
            sum = sum + d;
            System.out.println("你输入的第"+i+"个数,当前的结果为"+sum);
        }
        System.out.println(i+"个数的和为:"+sum);
        System.out.println(i+"个数的平均数为:"+(sum/i));

        scanner.close();
    }

}

顺序结构

在这里插入图片描述

package Java流程控制.struct;

public class ShunXuDemo {
	//顺序结构,从上往下执行
    public static void main(String[] args) {
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
        System.out.println(4);
        System.out.println(5);
    }

}

结果:在这里插入图片描述


选择结构

选择结构包括:

  • if单选择结构
  • if双选择结构
  • if多选择结构
  • 嵌套的if结构
  • switch多选择结构

if单选择结构

在这里插入图片描述

package Java流程控制.struct.选择结构;

import java.util.Scanner;

public class If {

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入:");
        String str = scanner.nextLine();

        //equals:判断字符串是否相等
        if(str.equals("hello")){
            System.out.println(str);
        }
        System.out.println("End");

        scanner.close();
    }

}


if多选择结构

在这里插入图片描述

package Java流程控制.struct.选择结构;

import java.util.Scanner;

public class If_Else {

    public static void main(String[] args) {
        //考试分数大于60分就是及格,小于60分就是不及格
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入成绩:");

        int score = sc.nextInt();

        //判断分数是否大于或等于60
        if(score>=60){
            System.out.println("及格");
        }else{
            System.out.println("不及格");
        }

		//关闭scanner
        sc.close();
    }

}


if多选择结构

在这里插入图片描述

package Java流程控制.struct.选择结构;

import java.util.Scanner;

public class If_ElseIf_Else {

    public static void main(String[] args) {
        //给成绩分为等级制,分别为:满分,A级,B级,C级,D级,不及格 和 格式错误
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入成绩:");

        int score = scanner.nextInt();

        /*
            if多选择结构最多且只能有 1 个 else 语句结尾, else 语句在所有的 else if 语句之后
            if多选择结构可以有若干个 else if 语句,它们必须在 else 语句之前
            一旦其中一个 if 或 else if 语句被检测为true,其他的else if 以及 else 语句都将跳过执行
        */
        
        if (score==100){
            System.out.println("恭喜满分");
        }else if(score<100 && score>=90){
            System.out.println("A级");
        }else if(score<90 && score>=80){
            System.out.println("B级");
        }else if(score<80 && score>=70){
            System.out.println("C级");
        }else if(score<70 && score>=60){
            System.out.println("D级");
        }else if (score<60 && score>=0){
            System.out.println("不及格");
        }else{
            //为防止用户输入100~0以外的数字或字符等
            System.out.println("分数为100分制,格式错误!");
        }

        //关闭scanner
        scanner.close();
    }

}


嵌套的 if 结构

在这里插入图片描述

package Java流程控制.struct.选择结构;

import java.util.Scanner;

public class If_If {

    public static void main(String[] args) {

        //嵌套的if结构
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入成绩:");

        int score = scanner.nextInt();

        //判断
        if (score>=60){
            //条件成立输出下面语句
            System.out.println("合格");
            //嵌套判断
            if (score==100){
                //上级 if 语句成立,则判断此 if 语句
                //条件成立则输出上面语句与下面语句,条件不成立则只输出上面语句
                System.out.println("合格且满分");
            }
        }

        //关闭scanner
        scanner.close();
    }

}


switch多选择结构

在这里插入图片描述

package Java流程控制.struct.选择结构;

public class SwitchDemo1 {

    public static void main(String[] args) {
        char grade = 'B';

        //case穿透
        //switch 匹配一个具体的值

        switch (grade){
            case 'A':
                System.out.println("优秀");
                break;//可选
            case 'B':
                System.out.println("良好");
                break;//可选
            case 'C':
                System.out.println("及格");
                break;//可选
            case 'D':
                System.out.println("挂科");
                break;//可选
            default://可选
                System.out.println("格式错误");
        }
    }

}

输出结果为:良好

JDK7的新特性,表达式结果可以是字符串

package Java流程控制.struct.选择结构;

public class SwitchDemo2 {

    public static void main(String[] args) {

        String name = "小红";
        //JDK7的新特性,表达式结果可以是字符串!!!
        //字符的本质还是数字

        /*
        正常编译  java --- class

        进行反编译
        !!只能在磁盘文件夹里面进行拷贝!!
        out文件夹里面的class文件(字节码文件)从磁盘文件夹复制到 src文件夹里的java文件夹里面 ---
        ---> 在IDEA里面打开class文件   反编译(IDEA)
        */
        switch (name){
            case "小红":
                System.out.println("小红到");
                break;
            case "小花":
                System.out.println("小花到");
                break;
            case "小周":
                System.out.println("小周到");
                break;
            default:
                System.out.println("找不到这个人");
        }
    }

}

输出结果为:小红到

循环结构

在这里插入图片描述


while 循环

在这里插入图片描述

package Java流程控制.struct.循环结构;

public class WhileDemo2 {

    public static void main(String[] args) {
        //计算1+2+3...+100=?
        int i = 0;
        int sum = 0;

        // while 先判断后执行
        while (i<=100){
            sum = sum + i;
            i++;
        }
        System.out.println(sum);//5050
    }

}


do while 循环

在这里插入图片描述

package Java流程控制.struct.循环结构;

public class DoWhileDemo1 {

    public static void main(String[] args) {
        int i = 0;
        int sum = 0;

        //do while 是先执行后判断! do while 总是保证循环体会被至少执行一次!这是和 while 的主要差别
        do {
            sum = sum + i;
            i++;
        }while (i<=100);
        System.out.println(sum);//5050
    }

}

对比while 和 do while 区别

package Java流程控制.struct.循环结构;

public class DoWhileDemo2 {

    public static void main(String[] args) {
        int i = 1;
        //while 循环 先判断后执行
        while (i>5){
            System.out.println(i);
            i++;
        }

        System.out.println("===========================");

        //do while 循环  先执行后判断! do while 总是保证循环体会被至少执行一次!这是和 while 的主要差别
        do {
            System.out.println(i);
            i++;
        }while (i>5);

    }

}

For循环

在这里插入图片描述

for 循环的结构
package Java流程控制.struct.循环结构;

public class ForDemo1 {

    public static void main(String[] args) {

        //   初始化   // 条件判断 //迭代
        for (int i = 1; i <= 100; i++) {
            System.out.println(i);
        }
        System.out.println("for循环结束");

        /*
        关于 for 循环有以下几点说明:
        最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
        然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为 false,循环终止,开始执行循环体后面的语句。
        执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。
        再次检测布尔表达式。循环执行重复的过程,知道布尔表达式为 false。
         */

        //死循环
        for ( ; ; ){

        }
    }

}

练习

for 循环练习一:计算 0~100 之间的 奇数和 , 偶数和

package Java流程控制.struct.循环结构;

public class ForDemo2 {

    public static void main(String[] args) {
        //计算 0~100 之间的 奇数和 , 偶数和
        int oddSum = 0;
        int evenSum = 0;

                //初始化 //条件判断 //迭代
        for (int i = 0; i <= 100; i++) {
            if (i%2 != 0){//奇数
                oddSum += i;
            }else{//偶数
                evenSum += i;
            }
        }
        System.out.println("奇数的和为:"+oddSum);//2500
        System.out.println("偶数的和为:"+evenSum);//2550
    }

}

for 循环练习二:用 while 或 for 循环输出 1~1000 之间能被5整除的数,并每行输出3个数

package Java流程控制.struct.循环结构;

public class ForDemo3 {

    public static void main(String[] args) {
        //用 while 或 for 循环输出 1~1000 之间能被5整除的数,并每行输出3个数

        //for循环
        //      初始化 // 条件判断 // 迭代
        for (int i = 1; i <= 1000; i++) {
            //判断能被 5 整除的数,将它输出
            if (i%5 == 0){
                System.out.print(i+"\t");//不换行输出
            }
            //判断每行的第三个数
            if (i%(3*5) == 0){
                System.out.println();//换行输出
                //System.out.print("\n");
            }
        }

//        //while循环
//        int i = 1;
//        while (i<=1000){
//            if (i%5 == 0){
//                System.out.print(i+"\t");
//                if (i%(3*5) == 0){
//                    System.out.print("\n");
//                    //System.out.println();
//                }
//            }
//            i++;
//        }
    }

}

for 循环练习三:打印九九乘法表

package Java流程控制.struct.循环结构;

public class ForDemo4 {

    public static void main(String[] args) {
        //打印九九乘法表
        //1x1=1
        //1x2=2	2x2=4
        //1x3=3	2x3=6	3x3=9
        //1x4=4	2x4=8	3x4=12	4x4=16
        //1x5=5	2x5=10	3x5=15	4x5=20	5x5=25
        //1x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36
        //1x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=49
        //1x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=64
        //1x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81


        //嵌套 for循环
        //因为九九乘法表需要 2个变量,所以需要使用 嵌套 for循环
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j+"x"+i+"="+(i*j)+"\t");//不换行输出
            }
            System.out.println();//换行输出,结果如上
            //System.out.print("\n");//加入换行符,也可以实现换行
        }



//        //倒过来的九九乘法表
//        for (int i = 9; i >= 1; i--) {
//            for (int j = 1; j <= i; j++) {
//                System.out.print(j+"x"+i+"="+(i*j)+"\t");
//            }
//            System.out.println();
//        }


    }

}

增强 for 循环

在这里插入图片描述

package Java流程控制.struct.循环结构;

public class ForDemo5 {

    public static void main(String[] args) {
        int[] numbers = {10,20,30,40,50};//定义一个数组

        for (int i = 0; i < 5; i++) {
            System.out.print(numbers[i]+"\t");
        }

        System.out.println("\n==================");

        //遍历数组的元素
        for (int x:numbers) {
            System.out.print(x+"\t");
        }
    }

}

结果:在这里插入图片描述


break & continue

在这里插入图片描述

break

package Java流程控制.break_AND_continue;

public class breakDemo {

    public static void main(String[] args) {
        //for 循环输出100个数
        for (int i = 1; i <= 100; i++) {
            //如果 i = 20 的时候循环强制退出,不执行循环剩余语句
            if (i == 20){
                break;//强制退出循环
            }
            System.out.println(i);
        }
    }

}

continue

package Java流程控制.break_AND_continue;

public class continueDemo {

    public static void main(String[] args) {
        //for 循环输出100个数
        for (int i = 1; i <= 100; i++) {
            //如果 i 是偶数则不执行跳过这次循环,然后接着进行剩余循环
            if (i%2 == 0){
                continue;//跳过此次循环
            }
            System.out.println(i+"\t");
        }

        /*
            break在任何循环语句的主体部分,均可用break控制循环的流程
            break用于强制退出循环,不执行循环中剩余的语句。(break 语句也在 switch语句中使用)
         */

        /*
            continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断。
        */
    }

}

goto

类似goto的用法

package Java流程控制.break_AND_continue;

public class LableDemo {

    public static void main(String[] args) {
        //打印 101~150之间的质数
        //质数是指在大于 1的自然数中,除了 1和它本身以外不再有其他因数的自然数

        //outer可以理解成一个标签
        outer:for (int i = 101; i < 150; i++) {
            for (int j = 2; j < i/2; j++) {
                if (i % j == 0){
                    continue outer;//跳出,返回到 outer标签
                }
            }
            System.out.print(i+" ");
        }
    }

}

Exercise

Test

打印一个5行的三角形

    *
   ***
  *****
 *******
*********
package Java流程控制.z_exercise;

public class Test1 {

    public static void main(String[] args) {
        //打印三角形 5行的正三角形
        //    *
        //   ***
        //  *****
        // *******
        //*********


        for (int i = 1; i <= 5; i++) {
            /*  思路:
                1.左侧应该输出一个空白的倒直角三角形,使‘结果三角形’形成形状
                2.把‘结果三角形’拆分为2个三角形来输出,那‘结果三角形’就需要使用2个子循环
             */
            //左侧输出一个空串的倒直角三角,使结果的三角形左侧形成斜的形状
            for (int j = 5; j > i; j--) {
                System.out.print(" ");
            }
            //输出左侧的三角形
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            //输出右侧的三角形,第一个‘*’不用输出了,所以是 j<i
            for (int j = 1; j < i; j++) {
                System.out.print("*");
            }
            //每行输出完就会换一行
            System.out.println();
        }

    }

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值