栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【JAVA基础】重新系统学习Java(二)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【JAVA基础】重新系统学习Java(二)

目录
  • 程序流程控制
    • 流程控制语句
    • 分支结构
      • if分支
      • switch
      • if与switch
    • 循环结构
      • for循环
      • while循环
      • for与while
      • do-while循环
      • 三种循环区别
      • 全选代码按Ctrl+alt+T能直接放入各种结构
      • 死循环
      • 循环嵌套
      • 跳转关键字
    • 随机数Random类
    • 案例:猜数字游戏

程序流程控制 流程控制语句

java提供了一些流程控制语句,来控制程序的执行流程

分支结构 if分支

根据判断的结果决定执行某个分支的代码

if语句格式1

if (关系表达式) {
    语句体;	
}

if语句格式2

if (关系表达式) {
    语句体1;	
} else {
    语句体2;	
}

if语句格式3

if (关系表达式1) {
    语句体1;	
} else if (关系表达式2) {
    语句体2;	
} 
…
else {
    语句体n+1;
}
switch

匹配条件去执行分支,适合做值匹配的分支选择,结构清晰,格式良好

执行流程

先执行表达式的值,拿值去与case后的值进行匹配

匹配哪个case的值为true就执行哪个case,遇到break就跳出switch分支

如果case后的值都不匹配则执行default代码

格式:

switch(表达式){
    case 值1:
        执行代码...;
        break;
    case 值2:
        执行代码...;
        break;    
    case 值3:
        执行代码...;
        break;
    ...
    default:
        执行代码n;
}

switch注意

表达式类型只能是byte,short,int,char,JDK5开始支持枚举,JDK7开始支持String,不支持double,float,long

case给出的值不允许重复,且只能是字面量,不能是变量

不要忘记写break,否则会出现穿透现象

switch的穿透性

如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性

当存在多个case分支的功能代码是一样时,可以用穿透性把流程集中到同一处处理,这样可以简化代码。

if与switch

if在功能上强于switch

if适合做区间匹配

switch适合做值匹配的分支选择,代码优雅

循环结构 for循环

控制一段代码反复执行很多次

格式

for(初始化语句;循环条件;迭代语句){
    循环体语句(重复执行的代码);
}

案例

求1-5之间的数据和,并把求和结果在控制台输出

package com.cat.test;

public class Test3 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 5; i++) {
            sum += i;
        }
        System.out.println(sum);
    }
}

求1-10之间的奇数和,并把求和结果在控制台输出

方法一:

定义for循环使其能够依次访问1,2,3,4,5,6,7,8,9,10

在for循环中,通过if筛选出奇数

在循环外定义一个整数变量sum来累加这些数据

方法二:

定义for循环使其能够依次访问:1,3,5,7,9

在循环外定义一个整数变量sum来累加这些数据

package com.cat.test;

public class Test3 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 10; i += 2) {
            sum += i;
        }
        System.out.println(sum);
    }
}

水仙花数

需求:在控制台输出所有的“水仙花数”,水仙花数必须满足如下2个要求:

1.水仙花数是一个三位数

2.水仙花数的个位、十位、百位的数字立方和等于原数

package com.cat.test;

public class Test3 {
    public static void main(String[] args) {
        //在循环外定义一个变量用于记录水仙花的个数
        //第一步:定义一个for循环找到所有三位数100-999
        //第二步:将每个数据的个位十位百位提取出来
        //第三步:用if判断:个位十位百位数字的立方和是否等于原数,等于则输出该数据
        int count = 0;
        for (int i = 100; i <= 999; i++) {
            int g = i % 10;
            int s = i / 10 % 10;
            int b = i / 100;
            int add = g * g * g + s * s * s + b * b * b;
            if (add == i) {
                System.out.println(i);
                count++;
            }
        }
        System.out.println("水仙花个数是:"+count);
    }
}

while循环

while循环格式与执行流程

初始化语句;
while(循环条件){
    循环体语句(被重复执行的代码);
    迭代语句;
}
for与while

功能上是完全一样的,for能解决的while也能解决,反之亦然

使用规范:知道循环几次:使用for;不知道循环几次建议使用:while

案例

折叠珠穆朗玛峰

珠峰高度8848.86米=8848860毫米,有一张足够大的纸,厚度0.1毫米。请问折叠几次,可以折成珠穆朗玛峰的高度

package com.cat.test;

public class Test4 {
    public static void main(String[] args) {
        //定义比变量存储珠峰和纸的高度
        //使用while循环,循环条件是(纸张厚度<山峰高度),内部控制纸张折叠,每折一次,纸张厚度变为原来的两倍,循环外定义计数变量,每次折叠+1
        double height = 8848860;
        double paper = 0.1;
        int count = 0;
        while (paper < height) {
            paper *= 2;
            count++;
        }
        System.out.println(count);
    }
}
do-while循环

先执行再判断循环条件

特点:一定会先执行一次循环体

格式

初始化语句;
do{
  循环体语句;
  迭代语句;
}while(循环条件);
三种循环区别

for循环和while循环(先判断后执行)

do…while(第一次先执行后判断)

for循环中,控制循环的变量只在循环中可以使用。While循环中,控制循环的变量在循环后还可以继续使用。

全选代码按Ctrl+alt+T能直接放入各种结构 死循环

一直循环下去,如果没有干预不会停止下来

经典写法

while(true){
    System.out.println("!");
}


do{
    System.out.println("!");
}while(true);

案例

密码验证

package com.cat.test;

import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) {
        int okpassword = 520;
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请您输入正确的密码:");
            int password = sc.nextInt();
            if (password == okpassword) {
                System.out.println("登录成功");
                break;//结束当前所在循环的执行
            } else {
                System.out.println("密码错误");
            }
        }
    }
}

循环嵌套

特点:外部循环每循环一次,内部循环完全执行完一次

跳转关键字

break:跳出并结束当前所在循环的执行

continue:用于跳出当前循环的当次执行,进入下一次循环

注意:

break只用于结束所在循环,或者结束所在switch分支的执行

continue只能在循环中进行使用。

package com.cat.test;

public class Test7 {
    public static void main(String[] args) {
        //理解break和continue的作用
        //场景:循环五天,但是第三天中途截止
        for (int i = 0; i < 5; i++) {
            System.out.println("正常");
            if (i == 2) {
                break;//跳出并结束当前循环的执行
            }
        }

        //continue
        //场景:循环五天,但是第三天暂停,第四天恢复
        for (int i = 1; i <= 5; i++) {
            if (i == 3) {
                continue;//立即跳出当次执行,进入循环下一次
            }
            System.out.println("洗碗" + i);
        }
    }
}

break特殊用法

Scanner sc = new Scanner(System.in);
        OUT:
        while (true) {
            System.out.println("输入一个数字:");
            int g = sc.nextInt();
            for (int i = 0; i < num.length; i++) {
                if (g == num[i]) {
                    System.out.println("运气不错,猜中了。该数据第一次出现的位置为" + i);
                    break OUT;
                }
            }
            System.out.println("未猜中");
        }
随机数Random类

Random随机数技术

作用:用于在程序中获得随机数的技术

步骤:

1.导包

2.得到随机数

3.调用随机数的功能获取0-9的随机数

package com.cat.test;

import java.util.Random;

public class Test8 {
    public static void main(String[] args) {
        Random r = new Random();
        int a = r.nextInt(10);
        System.out.println(a);

    }
}

注意:

nextInt(n)功能只能生成0至n-1之间的随机数,不包含n

技巧:

r.nextInt(10)只能生成0-9,但是r.nextInt(10)+1能生成1-10

r.nextInt(origin:10,bound:31)代表10-30

案例:猜数字游戏

随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏

package com.cat.test;

import java.util.Random;
import java.util.Scanner;

public class Test9 {
    public static void main(String[] args) {
        Random r = new Random();
        int num = r.nextInt(100) + 1;
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请猜测数据:");
            int g = sc.nextInt();
            if (g > num) {
                System.out.println("猜大了");
            } else if (g < num) {
                System.out.println("猜小了");
            } else {
                System.out.println("正确,是" + g);
                break;
            }
        }

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/831270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号