**
DAY06-Rabdom和数组1
**
今天内容:random的学习掌握、数组的初步学习
Random
步骤:
①导包:import java.util.Random;
②创建对象 :Random random = new Random();
③定义接受常量: 数据类型 常量 = random.nex( //括号内填写随机次数的次数 );
例题一、//需求:用random实现 剪刀 、 石头 、 布
//需求:石头剪刀布
//0 剪刀 1 石头 2布
import java.util.Random;
public class SHITOUjiandaobu {
public static void main(String[] args) {
Random random = new Random();
int s=random.nextInt(3);
if(s==0){
System.out.println("剪刀");
}else if (s==1){
System.out.println("石头");
}else{
System.out.println("布");
}
}
}
例题二、//升级需求:人机对战 剪刀石头布
// random 机器出的
scanner 人出的
0 剪刀 1 石头 2 布
//定义死循环持续执行,当要退出时,破坏死循环
import java.util.Random;
import java.util.Scanner;
public class RenjiDazhan {
public static void main(String[] args) {
Random random = new Random();
Scanner scanner = new Scanner(System.in);
//机器
boolean i=true;
while (i){
int x = random.nextInt(3);
//人
int y = scanner.nextInt();
if(x==y){
System.out.println("平局---退出游戏输入886");
}else if((y==0&&x==2) || (y==1&&x==0) || (y==2&&x==1)){//人赢 (y==0&&x==2) || (y==1&&x==0) || (y==2&&x==1)
System.out.println("人赢---退出游戏输入886");
}else if(y==886){
i=false;
}
else {
System.out.println("机器赢---退出游戏输入886");
}
}
}
}
数组
概述:
有一个学生在Java中通过定义变量来表示比如
String name=”张三”; 但是一个班级中有很多学生该怎么办?定义多个变量
String name1=”张三1”;
String name2=”张三2”;
String name3=”张三3”;
String name4=”张三4”;
这种方式很繁琐,可用不可取 这个时候就产生了新的需求
数组特点:
1.一次性声明大量的用于存储数据的变量2.要存储的数据通常都是同类型的数据
数组(array)
是一种用于存储多个相同类型数据的存储模型
格式:
两种格式
格式1:
数据类型[] 变量名
例如: int[] arr
格式2:
数据类型 变量名[]
例如: int arr[]
初始化
概述:
- Java中的数组必须初始化,然后才能使用
- 初始化:为数组中的元素分配存储空间,并为每个数组元素赋值
初始化方式:
- 动态和静态初始化
①动态初始化:
- 初始化时只指定数组的长度,由系统为数组分配初始值
- 格式:数据类型[] 变量名=new 数据类型[数组长度];
- 例如: int[] arr=new int[10];
②静态初始化:
-
初始化时指定每个数组元素的初始值,由系统决定数组长度
-
格式:数据类型[] 变量名=new 数据类型[]{数据1,数据2…数据n};
例如: int[] arr=new int[]{1,2,3,4,5}; 可以简化为:数据类型[] 变量名={数据1,数据2...数据n}; 注意:简化写法中使用的是大括号 例如: int[] arr={1,2,3,4,5,6,7,8,9,10};
数组的访问分为两部分
1.访问数组
- 通过数组名称来访问
- 格式:数组名称
2.访问数组中的元素
- 通过索引来访问
- 格式:数组名称[索引]
索引
概述:是数组中元素排序的方式 作用:用于访问数组中的数据
特点:
- 索引从0开始
- 索引是连续的
- 索引是逐一增加,每次加1
内存结构图
数组常见问题:
①数组索引越界
Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException: 5
问题原因:访问到数组中的不存在的索引时发生
②空指针
Exception in thread “main” java.lang.NullPointerException
问题原因:引用没有指向堆内存的数据
数组的常见操作
①遍历(获取数组中的所有元素)
②获取最值(最大值、最小值)
③排序(冒泡排序)
①遍历
//遍历
public class BianLi {
public static void main(String[] args) {
int[] str={5,6,7,10,99};
for (int i = 0; i <=str.length-1 ; i++) {
System.out.println(str[i]);
}
}
}
②获取最值
public class SZMAX {
public static void main(String[] args) {
int[] str={1,2,5,6,8,100,3,7,4,10};
int max=str[0];
for (int i = 1; i <str.length-1 ; i++) {
if(str[i]>max){
max=str[i];
}
}
System.out.println(max);
}
}
③冒泡排序
//冒泡排序
public class MaoPaopaixu {
public static void main(String[] args) {
int [] str={5,3,2,6,1,4};
for (int i = 0; i <str.length-2 ; i++) {
for (int j = 0; j <str.length-1-i; j++) {
if(str[j]>str[j+1]){
int stmp=str[j+1];
str[j+1]=str[j];
str[j]=stmp;
}
}
}
//遍历
for (int k = 0; k <str.length-1 ; k++) {
System.out.print(str[k]);
}
}
}
填空题
数组会在内存中开辟一块________的空间,每个空间相当于之前的一个变量,称为数组的元素。数组的长度一经确定,就无法再改变。
要获取一个数组的长度,可以通过_______属性来获取,但获取的只是为数组分配的空间的数量,而不是数组中实际已经存放的元素的个数。
__ ____仅仅是给出了数组名字和元素的数据类型,要想真正的使用数组还必须使用new关键字为它分配内存空间。
创建数组后,系统会给每一个数组元素一个默认的值,如String类型元素的默认值是 _______。
在Java中有二维数组int [ ] [ ] array={{1,2,3},{4,5}} ,可以使用___________得到二维数组中第二维中第一个数组的长度。
(答案见下一章)
|
|
|
|
下一章day07-数组2和方法调用
天天更新不容易,随手点个小赞👍,你说是吧,吴彦祖!O(∩_∩)O