一, 生成随机数
代码如下
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出来的东西会在这块内存中开辟空间并产生地址
*方法区:字节码文件加载时进入的内存
*本地方法栈
*寄存器