循环结构和数组

循环结构

1.for循环

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

格式:

for(初始化语句;循环条件;迭代语句)f

循环体语句(重复执行的代码);}

2.for循环案例

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

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

2

int count=0;
for(int i=100;i<=999;i++)
{
    //个位
    int ge=i%10;
    //十位
    int shi=i/10%10;
    //百位
    int bai=i/100;
    if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){
        System.out.print(i+"\t");//\t是空格
        count++;
    }
}
System.out.println();//换行
System.out.println("水仙花个数为:"+count);

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

3.while循环

初始化语句;

while(循环条件){

循环体语句(被重复执行的代码);

迭代语句;}

4.for循环和while循环对比

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

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

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

5.do-while循环

先执行再判断循环条件

初始化语句;

do {

循环体语句;

迭代语句;} while(循环条件);  注意:一定会先执行一次循环体

6.死循环案例

密码验证

需求:系统密码是520,请用户不断的输入密码验证,验证不对输出密码错误,验证成功输出欢迎进入系统,并停止程序。

分析:(1)使用while死循环,让用户不断输入数据

    1. 与密码比对:验证不成功输出错误密码
    2. 验证成功输出欢迎进入系统,并使用break结束当前循环


 

//1.定义正确的密码
        int okpassword=520;
        Scanner sc=new Scanner(System.in);
        //2.定义一个死循环让用户不断输入密码验证
        while(true){
            System.out.println("请你输入正确的密码");
            int password=sc.nextInt();
            //3.使用if判断密码是否正确
            if(password==okpassword){
                System.out.println("登陆成功");
                break;
            }else{
                System.out.println("密码错误");
            }
        }

7.break和 continue

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

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

注意:break :只能用于结束所在循环,或者结束所在switch分支的执行。

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

8.案例:随机数Random类

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

使用步骤:

(1)导包:告诉程序去JDK的哪个包中找随机数技术

(2)写一行代码代表得到随机数对象

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

//1.导包
//创建随机数对象
Random rs=new Random();
//调用nextInt功能  可以返回一个整型的随机数
for (int i=0;i<10;i++) {
    int data=rs.nextInt(10);//0-9不包含10
    System.out.println(data);
}

-

Random生成随机数特点:

nextlnt(n)功能只能生成:0-(n-1)之间的随机数。

如果要生成1-10之间随机数

例子

Random r = new Random();

int number = r.nextInt(10)+ 1; //1-10

案例:

猜数字游戏:

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

分析:(1) 随机生成一个1-100之间的数据 

(2)使用死循环让用户不断提示用户猜测,猜大提示过大,猜小提示过小,猜中结束游戏。

//1.随机一个随机数 (0-99)+1
Random r=new Random();
int lucknumber=r.nextInt(100)+1;
//2.使用一个死循环 让用户去猜数据
Scanner SC=new Scanner(System.in);
while(true){
    System.out.println("请你输入你要猜测的数据(1-100):");
    int guessnumber= SC.nextInt();

    //3.猜测的情况
    if(guessnumber>lucknumber){
        System.out.println("你猜测的数据过大");
    } else if (guessnumber<lucknumber) {
        System.out.println("你猜测的数据过小");
    }else {
        System.out.println("恭喜你,猜对啦,可以去买单了 ");
        break;
    }
}

数组

1.静态初始化数组

定义数组的时候直接给数组赋值。

//完整格式

数据类型[]数组名= new 数据类型[]{元素1,元素2,元素3...

double[] scores = new double[]{89.9,99.5,59.5,88.0};

int[] ages = new int []{12,24,36}

//简化格式

数据类型[]数组名= {元素1,元素2,元素3,} ;

int[] ages = {12,24,36};

注意:数组变量名中存储的是数组在内存中的地址,数组是引用类型。

数组的访问:

数组的长度属性:Length(数组元素的个数)数组长度:数组名称.length

赋值:数组名称[索引]=数据;

数组的最大索引可以这样表示:数组名.length-1//前提:元素个数大于0

数组的注意事项:

(1)“数据类型[数组名”也可以写成“数据类型数组名[]”

(2)什么类型的数组存放什么类型的数据,否则报错。

(3) 数组一旦定义出来,程序执行的过程中,长度、类型就固定了。

2.数组的动态初始化

定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据。

格式:

数据类型[]数组名 = new数据类型[长度];

int[]arr = new int[3];      

然后再赋值

动态和静态数组的两种特点:

当前已经知道存入的元素值,用静态初始化。

当前还不清楚要存入哪些数据,用动态初始化。

动态初始化数组的元素默认值

数据类型                明细                                                                             默认值

基本类型          byte、short、char、int、long                                               0

基本类型          float、double                                                                         0.0

基本类型          Boolean                                                                                 false

引用类型          类、接口、数组、string                                                        null

  1. 数组的遍历

遍历:就是一个一个数据的访问。

用for循环

例子:int[] ages = {20,30,40,50};

     for (int i = e; i < ages. length; i++) {

     system.out.println(ages[i]);}

  1. 数组的案例

猜数字游戏:需求

开发一个幸运小游戏,游戏规则如下:

游戏后台随机生成1-20之间的5个数(无所谓是否重复),然后让大家来猜数字:

未猜中提示:“未命中”,并继续猜测

猜中提示:“运气不错,猜中了”,并输出该数据第一次出现的位置,且输出全部5个数据,最后结束本游戏

分析:(1)随机生成5个1-20之间的数据存储起来--->使用数组

(2)定义一个死循环,输入数据猜测,遍历数组,判断数据是否在数组中,如果在,进行对应提示并结束

循环;如果没有猜中,提示继续猜测直到猜中为止。

//开发一个幸运小游戏,游戏规则如下:
 //游戏后台随机生成1-20之间的5个数(无所谓是否重复),然后让大家来猜数字:开发一个幸运小游戏,游戏规则如下:
//1.定义一个动态初始化数组存储5个随机的1-20之间数据
 int data[]=new int[5];
 //2.生成5个1-20之间的随机数存到数组中
 Random r=new Random();
 for (int i = 0; i < data.length; i++) {
    // i=0 1 2 3 4
    data[i] =r.nextInt(20)+1;

 }
 //3.使用一个死循环让用户猜测
 Scanner sc=new Scanner(System.in);
 OUT:
 while(true){
     System.out.println("请你输入一个1-20之间的整数进行猜测:");
     int guessdata=sc.nextInt();
     //4.遍历数组的每个数据,看是否有数据与猜测的数据相同
     for (int i = 0; i < data.length; i++) {
         if(data[i]==guessdata){
             System.out.println("恭喜你猜中了");
             break OUT;//结束了整个死循环,代表游戏结束
         }
     }
     System.out.println("当前猜测的数据在数组不存在,请重新猜测");
 }
 //5.输出猜中数据数组的全部数组,
 for (int i = 0; i < data.length; i++) {
     System.out.print(data[i]+"\t");
 }

随机排名:

某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。

分析:(1)在程序中录入5名员工的工号存储起来---〉使用数组。(2)依次遍历数组中的每个元素,随机一个索引数据,让当前元素与该索引位置处的元素进行交换。

//1.动态初始化一个数组,有五个工号
int codes[]=new int[5];
//2.定义一个循环,循环5次,依次录入一个工号对应的位置
Scanner sc=new Scanner(System.in);
for (int i = 0; i < codes.length; i++) {
    //正式录入工号
    System.out.println("请你输入第"+(i+1)+"个员工的工号");
    int code= sc.nextInt();
    //存入数据中去
    codes[i]=code;
}
//3、遍历数组中的每个元素,然后随机一个索引出来,让该元素与随机索引位置处的元素值进行交换
Random r=new Random();
for (int i = 0; i < codes.length; i++) {
    //当前遍历的元素值:codes[i]
    int index=r.nextInt(codes.length);
    //定义一个临时变量
    int temp=codes[index];
    codes[index]=codes[i];
    codes[i]=temp;
}
//4.遍历数组元素输出就是随机排名的结果
for (int i = 0; i < codes.length; i++) {
    System.out.print(codes[i]+"\t");
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是秀秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值