java从零到项目实践(三)

Day 2(流程控制以及相关循环结构)

由于上周小老弟期末考试给他考前突击几天,所以学习进度搁下了不少,接下来回归正轨继续更新。



java流程控制

用户交互Scanner

菜鸟教程:https://www.runoob.com/java/java-scanner-class.html

在这里插入图片描述

在这里插入图片描述

注意:

1、scanner 还有很多语法,例如hasNextDouble(),表示是否输入的为数字(包括小数)

2、使用scanner类切记要先通过import java.util.Scanner引入

3、结束记得通过close关闭scanner类

4、next只有在接收到有效字符之后才会结束,所以如果一开始就未输入程序将一直等待,回车失效

代码展示:

import java.util.Scanner;   //引入此java内置包来获得Scanner使用权限
public class Demo01 {
    public static void main(String[] args){
        // 创建一个扫描器对象,用于接收键盘数据
       Scanner s = new Scanner(System.in);
       System.out.println("使用next方法接收: ");

       //判断用户是否输入字符串
        if (s.hasNext()){  
            String str = s.next();
            System.out.println("输入的内容为:"+ str);
        }

        //凡是属于IO流的类为了避免占用资源,需要将其关闭
        s.close();
    }
}

顺序结构

在这里插入图片描述

顺序结构十分简单,其实就是指的代码是从上至下一行一行一次执行的。

选择结构

在这里插入图片描述

重点:if多选择结构以及switch结构

If单选择结构即为简单的单if,双选择结构为if+else用来判断两种情况的不同选择

在这里插入图片描述

多选择结构:多个if+else if + …… + else

示例代码:

import java.util.Scanner;
public class ifDemo01 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入成绩");
        Double score = s.nextDouble();
        if (score == 100){
            System.out.println("恭喜满分");
        }else if(score <100 && score>=90){
            System.out.println("优秀");
        }else if(score <90 && score>=70){
            System.out.println("及格");
        }else if(score <70 && score>=60){
            System.out.println("再接再厉");
        }else if(score<60 && score>=0){
            System.out.println("挂科");
        }else{
            System.out.println("您输入的成绩不合法");
        }
        s.close();
    }
}

在这里插入图片描述

switch结构的工作原理和if多选择结构类似,其中expression表示将要进行判断的条件变量,case中的value即代表满足当前case的条件,当满足当前case的条件,则执行对应的语句,否则继续比对剩余case(若还有case)。若比对结束无可配对的case,则执行default下的语句。

示例代码:

import java.util.Scanner;
public class switchDemo02 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("猜猜我的名字");
        String i = s.next();
        switch (i){
            case "绝世秦羽":
                System.out.println("这就是我的名字,你真棒!");
                break;
            case "ashu":
                System.out.println("猜错了");
                break;
            case "岑寂":
                System.out.println("那是我的笔名");
                break;
            default:
                System.out.println("好了,你连边都不沾");
        }
        s.close();
    }
}

注意:break与default是可选项,但在每个case结尾加上break才能保证满足当前情况后只执行当前的语句,否则会出现继续执行满足的case之后的语句的情况。在这里插入图片描述

补充:反编译

简单来说,就是我们所写的代码计算机并不能看懂,以java为例,在编译时,我们将java文件转换成了class计算机才能运行,class文件又称字节码文件,IDEA可以对class进行反编译,例如这里的switchDemo02.java文件

在这里插入图片描述

在JDK7以后,表达式结果才能支持字符串类型,通过反编译不难看出,字符的本质还是数字!

循环结构

在这里插入图片描述

while循环:

在这里插入图片描述

示例代码:

public class whileDemo01 {
    public static void main(String[] args) {
        //计算1+2+3+……+100
        int i = 0;
        int sum = 0;
        while (i<=100){
            sum = sum +i;
            i++;
        }
        System.out.println(sum);
    }
}

Do-while循环:

在这里插入图片描述

示例代码:

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

        do {
            sum = sum + i;
            i++;
        }while (i<=100);
        System.out.println(sum);
    }
}
while与do while的区别

while是先判断后执行,do while是先执行再判断。所以对于do while来说,至少会先执行一次。
在这里插入图片描述

for循环:

在这里插入图片描述

练习1:

public class forDemo01 {
    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 = oddsum + i;
            }else{//偶数
                evensum = evensum + i;
            }
        }

        System.out.println(oddsum);
        System.out.println(evensum);

    }
}

练习二:

public class forDemo02 {
    public static void main(String[] args) {
        //用while和for循环输出1-1000之间能被5整除的数,并且每行输出3个
        int i = 1;
        //while
        while (i<=100){
            if (i%5==0){
                System.out.print(i + "\t");
                if (i%(5*3)==0){
                    System.out.println();
                }
                i++;
            }else {
                i++;
            }

        }
        System.out.println();
        System.out.println("======================");
        //for
        for (int j=1; j<=100; j++){
            if (j%5==0){
                System.out.print(j + "\t");  //print与println的区别在于println在输出时会自动换行,\t是增加空格
            }
            if(j%(5*3)==0){
                System.out.println();
                //换行也可以用System.out.print("\n")实现
            }
        }
    }
}

练习三:

public class forDemo03 {
    public static void main(String[] args){
        //打印九九乘法表
        for (int j=1; j<=9; j++){
            for (int i=1; i<=j; i++){
                System.out.print(i + "*" + j + "=" + (j*i) + "\t");
            }
            System.out.println();
        }

    }
}

增强for循环:

在这里插入图片描述

增强for循环将会在数组章节详细介绍,这里只做展示
在这里插入图片描述

break & continue

在这里插入图片描述

注意:

1、break在任何循环语句的主体部分,均可用break控制循环的流程

2、break用于强制退出循环,不执行循环中剩余的语句

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

练习

编写三角形图案

思路:

打印正方形比较好打,所以打印三角形可通过将正方向切割成几个小的三角形,分析每一部分每一行应该有多少元素,并用for循环实现。

在这里插入图片描述

示例代码:

public class preactice {
    public static void main(String[] args) {
        for (int i=1; i<=5; i++){
           for (int j=5; i<=j; j--){
               System.out.print(" ");
           }
           for (int j=1; j<=i;j++){
               System.out.print("*");
           }
           for(int j=1; j<i; j++){
               System.out.print("*");
           }
            System.out.println();
        }
    }
}

总结

这些结构体都是最基本且贯彻编程始终的重要部分,掌握牢固后才能更好地往前走。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值