java入门

判断和循环

顺序结构

就是代码从第一行执行到最后一行的过程就是顺序结构,简单的来说就是一行一行的按顺序执行

代码示例:

package orderdemo;

public class OrderDemo {
    public static void main(String[] args) {
        //代码从第一行执行到最后一行的过程就是顺序结构,简单的来说就是一行一行的按顺序执行
        System.out.println("他确实是思想比较的古板");
        System.out.println("有一种特别僵化的感觉");
        System.out.println("我还是比较喜欢他不讲话的样子");
        System.out.println("满足我的许多想象");
        System.out.println("现在一个人在这里写东西确实还挺难过的");
        System.out.println("感觉也是有一种枯燥无聊的感觉,不知道自己真的在思考着些什么");
    }
}

分支结构

if的第一种格式

定义一个变量

if(关系表达式){

语句体;

}

if语句在程序当中的作用就是用来进行判断的,第一种格式就是用来判断一种情况的(单条件判断)

关系表达式就是对里面的值进行判断,如果true就执行if下面判断的语句体

否则就不执行直接跳出整个判断语句 比如定义一个变量a=4,然后在if判断是否a>3,如果是则执行,

下面的语句体最简单的就比如打印"a大于3"这句话,如果上面的条件成立,则打印下面那句输出语句,否则不会进行输出打印

语句体就是要执行的语句,比如,一个简单的输出打印"HelloWorld"

注意:在if的逻辑题内不能写两个输出语句,因为一写上就会直接把两种的结果都打印出来

执行流程:先判断关系表达式里面的值是否为true,如果是则执行大括号里面的语句体,如果为

false则跳出整个if语句,此时表示执行结束

代码示例:

package ifdemo;

import java.util.Scanner;
public class IfDemo1 {
    public static void main(String[] args) {
        //if的格式
        //if(关系表达式){
        //   语句体;
        // }
        //需求:键盘录入女婿的酒量,如果酒量大于2斤,老丈人给出回应,反之不回应
        //分析
        //1.首先键盘录入女婿的酒量
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数代表你的酒量");
        int wine = sc.nextInt();
        if (wine > 2) {
            System.out.println("好的,你穿走我的小棉袄吧,给你都给你");
        }
        //2.然后if语句判断是否大于2,如果时候则输出回应,不是则跳到最后不回应的输出语句当中
        //注意:在if的逻辑题内不能写两个输出语句,因为一写上就会直接把两种的结果都打印出来
        //读题的时候的问题:每次读题的时候要看仔细,不要错过任何一个字,也就是题目的意思,读题三遍!!!
    }
}

如果是判断一个布尔类型的值,就直接把结果写在小括号里面就可以

大括号的开头的开头可以另起一行书写,但是建议写在第一行的末尾

在语句体中,只有一行代码大括号可以省略不写,但是个人建议是写上,这样更好的遵守我么java的规范

代码示例:

package ifdemo;

public class IfDemo2 {
    public static void main(String[] args) {
        //使用If的一些注意点
        //1.大括号的开头的开头可以另起一行书写,但是建议写在第一行的末尾
        //2.在语句体中,只有一行代码大括号可以省略不写,但是个人建议是写上,这样更好的遵守我么java的规范
        //3.如果要判断布尔类型的值,直接把变量的值写在小括号就可以
        boolean flag = true;
        if (flag) {
            System.out.println("flag的值就是true");
        }

    }
}

if的第二种格式

定义一个变量

if(关系表达式){

语句体1;

} else{

语句体2;

}

if的第二种格式就是用来判断两种情况的(双条件判断)

这里的else的意思就是不满足关系表达式里的判断的时候就执行else里面的语句,也就是所谓的

语句体2

执行流程:先执行关系表达式里的值,如果判断为true,则执行语句体1,如果为false就执行else里面的语句体2,执行完了语句体2之后则整个if语句就运行结束

代码示例:

package Test;

import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        /*需求:键盘录入一个整数表示身上的钱
        大于等于100就吃网红餐厅
        小于100就吃经济实惠的沙县小吃  */
        //我真的是会服死我自己了,每次都不认真的去看题目要求!老是自以为是!!!
        //应用场景就是二选一的时候会用到这个判断
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数表示身上的钱");
        int money = sc.nextInt();
        if (money >= 100) {
            System.out.println("咱们有钱吃网红餐厅!!");
        } else {
            System.out.println("穷逼没钱只能去吃经济实惠的沙县小吃!!");
        }
    }
}

if的第三种格式

定义一个变量

if(关系表达式1){

语句体1;

}else if(关系表达式2){

语句体2;

...

}else{

n+1;

}

第三种格式就是用来判断3种情况的(多条件判断)

其实就是在原先的基础上连接了一个新的if判断语句而已,其功能跟第二种是一样的

执行流程:先执行关系表达式1的值,如果为true则执行语句体1,如果为false则执行关系表达式2的值

如果为true则执行语句体2,如果为false则执行关系表达式3的值,以此类推,如果所有的关系表达式的值都为false则执行语句体n+1的值,此时if语句到这里执行结束

简单来说就是,从上往下依次进行判断,如果有一个为真,则执行对应的语句体

如果全都是假,则执行else里面的语句体

代码示例:

package Test;

import java.util.Scanner;

public class Test6 {
    public static void main(String[] args) {
        //看题目要看清楚来!!!老是粗心大意!!!
        //需求:根据不同的分数送不同的礼物
        //95~100 送一辆自行车
        //90~94 游乐场玩一天
        //80~89 变形金刚一个
        // 小于80  屁股痒痒了
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的分数");
        int grade = sc.nextInt();
        if (grade >= 0 && grade <= 100) {
            System.out.println("你输入的分数有效");
            if (grade >= 95 && grade <= 100) {
                System.out.println("送一辆自行车");
            } else if (grade >= 90 && grade <= 94) {
                System.out.println("游乐场玩一天");
            } else if (grade >= 80 && grade <= 89) {
                System.out.println("变形金刚一个");
            } else if (grade < 80) {
                System.out.println("屁股痒痒了");
            }
        } else {
            System.out.println("亲,您输入的分数有误呢PS(都不看题目的吗,这都能填错,你不要读了,回家种田去吧!!)");
        }
    }
}

switch的格式

定义一个变量

switch(字面量的值){

case 值1:

语句体1;

break;

case 值2:

语句体2;

break;

...

default :

语句体n+1;

break;

}

格式说明:

表达式:(就是将要匹配的值)取值类型为byte,int,short,char

case:后面跟的值就是要和表达式匹配的值(被匹配的值)

break:中断,结束的意思,表示结束switch语句的执行

default:就是没有一个值跟表达式的值匹配,就执行该语句下的语句体,和if语句的else类似

补充:case里面的值只能字面值,不能是变量  case下所对应的值不能重复

执行流程:先执行表达式里的值,然后与下面的case的值进行匹配,匹配上了就执行对应case下的语句体,然后遇到break就结束整个switch语句的执行,如果都不匹配,则执行default里面的语句,然后遇到break之后结束整个switch语句

代码示例:

package switchdemo;

public class SwitchDemo1 {
    public static void main(String[] args) {
        //兰州拉面,武汉热干面,北京炸酱面,陕西油泼面
        //定义自己想要吃的面
        //细节注意:case后面的值不能重复 重复的话会报错!
        //switch里面的值只能是字面量,不能是变量,因为变量switch是判断不了的
        // 但是我字符串类型的数据好像也是能穿进去,但是不规范而已
        //为什么我写的default后面没有break也是可以运行的,而且还没有报错!
        String noodles = "陕西油泼面";
        switch (noodles) {
            case "兰州拉面":
                System.out.println("滚得去吃你的该死的兰州拉面!");
                break;
            case "武汉热干面":
                System.out.println("武汉热干面又不好吃,吃屎!");
                break;
            case "北京炸酱面":
                System.out.println("北京炸酱面没吃过,不过我现在心情不是特别的好");
                break;
            case "陕西油泼面":
                System.out.println("陕西油泼面听起来就不好吃");
                break;
            default:
                System.out.println("泡面是最难吃的东西!!!");
                break;
        }
    }
}

switch的扩展知识

1.case的穿透性

就是在switch语句下在执行了相应case里的值,然后执行了该case下对应的语句体,但是执行了语句体之后没有看到break,就会继续执行下面的语句体并且执行完了会直接打印在控制台,如果一直都没看到break或者switch语句的右大括号,就会全部打印在控制台,直到看到break或者switch语句的右大括号才会结束语句的执行,简单的就是说没有break和右大括号就一直的往下穿透

2.default的位置和省略

它的位置不一定是在最后,可以是在任意的位置,但是java的规范是写在switch语句的末尾

省略就是可以不写default语句,语法不会有问题,但是不建议省略,因为这样就没有备用选项,简单的说就是没有备胎了

代码示例:

package switchdemo;

public class SwitchDemo2 {
    public static void main(String[] args) {
        //default的位置和省略
        // 位置:default不一定是写在最下面,可以在任意位置,但是我们习惯是写在最下面
        //省略:default可以省略,语法不会有问题,但是不建议省略
        //case的穿透性
        //就是语句体中没有break导致的
        //执行的流程:
        //首先拿着小括号表达式里面的值跟case里面的每一个值进行匹配
        //如果匹配上了就执行对应的语句,如果此时看到了break,就结束整个语句
        //如果没有break,程序就执行下一个语句体,一直遇到break或者右大括号为止
        //应用场景:
        //如果有多个case语句重复了,就可以考虑用case穿透简化代码
        //JDK的新特性
        //这个特性实在JDK12版本里可使用的

        int number = 1;
        switch (number) {
            case 1:
                System.out.println("number的值为1");

            case 2:
                System.out.println("number的值为10");

            case 3:
                System.out.println("number的值为20");

            default:
                System.out.println("number的值不是1,10或20");
        }
    }
}

运行结果:

number的值为1
number的值为10
number的值为20
number的值不是1,10或20

for循环格式

for(初始化语句;条件判断语句;条件控制语句){

循环体语句;

}

初始化语句就是从什么时候开始循环

条件判断语句就是从什么时候结束循环

条件控制语句就是每循环一次,控制语句就自增一次,直到不满足条件判断语句里的结束条件

循环体语句就是需要重复打印的语句

代码示例:

package loopdemo;

public class ForDemo1 {
    public static void main(String[] args) {
        //打印5次HelloWorld
        /* for循环的格式
        for(初始化语句;条件判断语句;条件控制语句){
        循环体语句
        }
         */
        for (int i = 1; i <= 10; i++) {
            System.out.println("HelloWorld");
        }
    }
}

while循环格式

初始化条件;

while(条件判断语句){

循环体语句;

条件控制语句;

}

格式说明:

初始化条件:就是循环的开始条件

条件判断语句:就是循环的结束条件

循环体语句:就是要重复执行的语句

条件控制语句:就是while语句循环多少次,条件控制语句就++几次,然后再判断结束条件是否满足

如果满足则继续循环,否则就退出整个switch语句

执行流程:跟for循环语句循环过程是一样的

代码示例:

package Test;

public class Test17 {
    public static void main(String[] args) {
        /*需求:世界最高山峰珠穆朗玛峰(8848.43米=8844430毫米)
        假如我有一张足够大的值,厚度为0.1毫米
        请问折叠多少次可以折成珠穆朗玛峰的高度?*/
        //分析:折叠纸张,每折一次,纸张的厚度就是原先的两倍
        //double a=0.1
        //a=a*2
        //问题:不是你while语句没有条件控制语句怎么执行的呢? 难不成是有count++???
        //其实很多时候写不出是因为逻辑没有理清楚!!!
        //下次要多锻炼一下自己的逻辑思维的能力,有些问题沉下心来一点点想是可以想明白的,要多花一点儿时间而已
        //单位跟后面的值要是一样
        //1.定义一个变量记录山峰的高度
        double height = 8844430;
        //2.定义一个变量来记录纸张的厚度
        double paper = 0.1;
        //3.定义一个变量来统计折叠的次数
        int count = 0;
        //4.while循环折叠纸张,只要纸张的厚度小于山峰的高度,则循环继续
        //每折叠一次,统计次数就要++一次
        while (paper <= height) {
            System.out.println(paper);
            paper *= 2;
            count++;
        }
        System.out.println("需要折叠"+count+"次");
    }
}

for循环和while的对比

相同点:运行规则都是一样的

不同点:for循环式知道循环的次数跟范围   while则是不知道循环的次数跟范围只知道循环的结束条件

累加思想和统计思想

累加就是定义一个变量,初始化值为0,然后求循环体里面每一个数字的和

求和变量不能定义在循环的里面,变量只在所属的大括号中有用

如果我们把变量定义在循环的里面,那么变量只在本次循环中有效 

当把变量放在循环的里面的时候,那么变量只在本次循环有效

当本次变量结束之后,变量就会在内存当中消失 

第二次循环的开始又会重新定义一个新的变量

结论:如果我们要写累加求和变量的时候,变量就要定义在循环的外面就可以了

代码示例:

public class Test14 {
    public static void main(String[] args) {
        //获取一个范围中的每一个数据,也会用到循环,求1~5之间的和
      
        int sum = 0;
        for (int i = 1; i <= 10; i++) {
            sum += i;
        }
        System.out.println(sum);
    }
}

统计就是定义一个变量,初始化值为0,然后每循环一次,该变量就自增一次,最后循环结束后

该变量就是记录了该循环下的次数

代码示例:

package Test;

public class Test19 {
    public static void main(String[] args) {
        /*给定两个整数,被除数和除数(都是正数,且不超过int的范围)
           将两数相除,需要不使用乘法,除法,和 %运算符
           得到商和余数*/

        int count = 0;
        int dividend = 345;
        int divisor = 10;
        //3.while循环相减了多少次得到余数
            while (dividend >= divisor) {
            //被除数大于除数才能执行下去
            dividend = dividend - divisor;
            count++;
        }
        System.out.println("余数为:" + dividend);
        System.out.println("商为:" + count);
    }
}

do...while循环格式(了解下一就可以,后面实际用的不多)

初始化语句;

do{

循环体语句;

条件控制语句;

}while(条件判断语句);

do...while循环和while循环的区别:就是前者是先执行后判断,后者则是先判断后执行

执行流程:do...while循环至少还会先执行一次,然后进行判断,如果为true则继续返回上面执行循环语句,如果为false则结束整个语句的循环

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值