JAVA+AI教程-第四天
一维数组-概述,静态初始化
数组是什么?
我们进行数据存储第一想法是什么?
是变量吗?用变量处理批量数据,会显得非常臃肿
如果我们让ai给我们解决它会给我们一种什么样的方案呢?
很显然,ai给了我们一个全新的方案,利用数组存储数据,取出,这样的好处就是我们只需要定义一个数组,而不是多个变量。
知识点
数据的访问
数据明[索引]
一维数组-动态初始化
动态初始化数组就是我们没办法在一开始就让数组都有数据,而是仅仅定义它的长度,因此呢就不能按照之前的方法
动态初始化数组语法:
数据类型[] 数组名=new 数据类型[长度];
数组的遍历:一个一个数据进行访问
为什么要遍历数组?怎么遍历
一维数组-求最值
对于标注的部分,我们正常不用变量也是可以的,ai就是这种做法,但是我们还是利用了变量,因为我们一直用数组
代替
性能优化:那么第一次数组比较的时候我们进行了一次查找,第二次max=数组[]有进行了查找,因此为了提高效率,
我们用变量储存,这样只需要一次遍历
一维数组-数组的综合案例
开发一个简易版的斗地主程序,要求只完成做牌(存储五十四张牌),洗牌
package com.mengchen;
public class 斗地主 {
public static void main(String[] args) {
System.out.println("现在是斗地主顺牌阶段");
//我们首先定义一个54长度的数组用来储存所有的牌(长度是54,实际上是[0,53))
String[] packageCards = new String[54];
String[] numbers = new String[]{"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
String[] colors = new String[]{"♠", "♥", "♣", "♦"};
int index = 0;
// 正确填充52张普通牌
for (int i1 = 0; i1 < numbers.length; i1++) {
for (int i2 = 0; i2 < colors.length; i2++) {
packageCards[index++] = colors[i2] + numbers[i1];
/*上面的index++真是让我研究了一会,我一直感觉哪里不对,咱们前面的逻辑都是正确的,如果不是index++,而只是index,那么
我们的index就会一直往下顺,到k♦,你可以把++去掉,所以,我们妙用index++实现了每一次循环之后都能让index加1*/
}
}
// 加入大小王
packageCards[52] = "小王";
packageCards[53] = "大王";
// 打印所有的牌
for (int i = 0; i < packageCards.length; i++) {
System.out.print(packageCards[i] + " \t");
}
System.out.println("");
System.out.println("接下来是洗牌阶段");
for (int i = 0; i < packageCards.length; i++) {
int randomIndex = (int) (Math.random() * packageCards.length);
String temp = packageCards[i];
packageCards[i] = packageCards[randomIndex];
packageCards[randomIndex] = temp;
}
System.out.println("洗牌之后:");
for (int i = 0; i < packageCards.length; i++) {
System.out.print(packageCards[i] + "\t");
}
}
}
二维数组-概述,定义
遍历二维数组的方法