自学java第2天(随机数,猜字游戏,数组)

一, 生成随机数

代码如下

package day2;

import java.util.Random;

public class randomdemo1 {
    public static void main(String[] args) {
        // 目标:学会使用java提供的随机数类Random
        // 1, 导包
        // 2,创建随机数对象
        Random r=new Random();
        // 3,调用 nextInt  返回一个整型的随机数
        int data=r.nextInt(10);
        System.out.println(data);
    }
}

运行结果

多次循环生成随机数

注意点:

*nextInt(n)功能只能生成:0~(n-1)之间的随机数

生成1~10 的随机数如何操作?

Random r = new Random();

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

二,猜数字游戏

package day2;

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

public class guessnumber {
    public static void main(String[] args) {
        // 1,生成一个随机数 1~100
        Random r=new Random();
        int data= r.nextInt(100)+1;

        // 2,使用循环 猜测,并给出提示
        Scanner sc = new Scanner(System.in);
        while(true){
            // 让用户输入数据
            System.out.println("请您输入猜测的数字(1~100):");
            int number=sc.nextInt();

            // 判断大小情况
             if(number>data){
                 System.out.println("您猜测的数字过大");

             }
             else if(number<data){
                 System.out.println("您猜测的数字过小");
             }
             else{
                 System.out.println("猜中了");
                 break;
             }


        }

    }
}

三,数组

(1)数组是什么

*数组是用来存储一批同种类型数据的内存区域(可以理解成容器)。

(2)静态初始化数组

例如:

int[ ] ages=new int[]{10,12,23};

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

简化写法:

int[ ] ages = {10,22,23};

数组中存储的是地址信息。

package day2;

public class shuzu {
    public static void main(String[] args) {
        // 静态初始化定义数组
        //double[] scores= new double[]{99.5, 78, 56, 23};
        double[] scores= {99.5, 78, 56, 23};
        //int[] ages= new int[]{12, 33, 56};
        int[] ages= {12, 33, 56};
        //String[] names=new String[]{"张三","李四"};
        String[] names={"张三","李四"};
        System.out.println(scores); //输出地址
        
    }
}

 

(3)数组的访问

数组名称[索引]

数组的长度属性:length

package day2;

public class shuzu2 {
    public static void main(String[] args) {
        // 访问数组元素
        int[] ages={12,23,45};
        // 取值
        System.out.println(ages[0]);
        // 赋值
        ages[0]=10;
        System.out.println(ages[0]);
        // 访问数组长度
        System.out.println(ages.length);
    }
}

输出

(4)动态初始化数组

package day2;

public class shuzu3 {
    public static void main(String[] args) {
        // 学会动态初始化数组定义和使用
        double[] scores=new double[3]; //默认值都为0
        // 赋值
        scores[0]=99.5;
        System.out.println(scores[0]);
        //
        String[] names=new String[90];
        names[0]="张三";
        System.out.println(names[0]);

    }
}

(5)数组元素的默认值

byte,short,char,int,long 的默认值为---0

float,double 的默认值为---0.0

boolean 的默认值为--false

类,接口,数组,String 的默认值为 null

 

package day2;

public class shuzu4 {
    public static void main(String[] args) {
        double[] ages = new double[5];
        System.out.println(ages[2]);

    }
}

(6)数组的遍历

一个一个的访问数组的数据。

package day2;

public class shuzu5 {
    public static void main(String[] args) {
        // 学会进行数组的遍历
        int[] ages={12,34,56,45,78};
        for(int i = 0;i<ages.length;i++){
            System.out.println(ages[i]);
        }

    }
}

 

输出结果

(7)数组的例题

用数组求16,32,8,100,78 的和

package day2;

public class shuzu6 {
    public static void main(String[] args) {
        int[] a={16,32,8,78,100};
        int sum =0;
        for(int i=0;i<a.length;i++){
            sum=sum+a[i];
        }
        System.out.println(sum);
    }
}

 (8)数组求最值

package day2;

public class shuzu7 {
    public static void main(String[] args) {
        // 数组元素求最值
        // 定义一批初始化数组存储数据
        int[] b={15,9000,10000,20000,9500,-5};
        //定义一个变量存储最大值元素,建议第一个作为参照;
        int max=b[0];
        //遍历数组的元素,依次比较,若较大,则替换。
        for (int i = 1; i < b.length; i++) {
            if(b[i]>max){
                max=b[i];
            }
            
        }
        //输出max
        System.out.println("数组的最大值为:"+max);
    }
}

输出结果

(8)数组猜数字案例

 随机生成1 ~ 20 之间的五个数字,猜数字。

*未猜中提示:未猜中

*猜中提示:运气不错,输出该数据第一次出现的位置,并输出全部五个数据

package day2;

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

public class shuzu8 {
    public static void main(String[] args) {
        //  五个数字让用户猜测,猜中提示猜中,并输出该数据在数组中第一次出现的位置,并打印出全部数字。
        //  未猜中继续

        //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++) {
            data[i]=r.nextInt(20) + 1;
        }
        //使用死循环,让用户猜测;
        Scanner sc = new Scanner(System.in);
        OUT:
        while(true){
            System.out.println("请输入1~20的数字进行猜测");
            int guessnumber=sc.nextInt();
            //比较数组每个数字,进行比较,并提示;
            for (int i = 0; i < data.length; i++) {
                if(data[i]==guessnumber){
                    System.out.println("猜中了,您猜中的数字索引为:"+i);
                    break OUT;
                }


            }
            System.out.println("您猜测的数字不存在,请重新猜测");


        }
        //输出数组的全部元素;
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i] + "\t");
            

        }

    }
}

(8)数组随机排名(好难啊啊啊)

依次输入 22,33,35,13,88 的工号,然后将这些数字随机排序并输出。

package day2;
import java.util.Random;
import java.util.Scanner;
public class shuzu9 {
    public static void main(String[] args) {
        // 键盘录入一组工号,再随机输出排名
        // 动态初始化数组,存储五个工号;
        int[] datas= new int[5];
        // 循环,录入工号
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < datas.length; i++) {
            //录入工号
            System.out.println("请输入第" +(i+1)+ "个员工的工号");
            int data=sc.nextInt();
            //存入数组;
            datas[i]=data;
        }
        Random r=new Random();
        //遍历数组中每个元素,然后随机一个索引出来,让改元素与该索引位置处的元素交换位置(重点)
        for (int i = 0; i < datas.length; i++) {
            //当前遍历的元素值:datas[i];
            //随机一个索引位置;
            int index = r.nextInt(datas.length);
            //交换元素值;
            //定义临时变量;
            int t;
            t=datas[index];
            datas[index]=datas[i];
            datas[i]=t;
        }
        //输出数组
        for (int i = 0; i < datas.length; i++) {
            System.out.print(datas[i]+"\t");

        }
    }
}

(9)数组的内存图

java 内存分配介绍

*栈 :方法运行时所进入的内存,变量也是在这里

*堆:new出来的东西会在这块内存中开辟空间并产生地址

*方法区:字节码文件加载时进入的内存

*本地方法栈

*寄存器

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值