Java 训练营
数组
长度与遍历数据元素
使用.length 属性获取当前数组的长度, 长度就是数组中元素的个数.
package day05; public class Demo01 { public static void main(String[] args) { /* * 数组的长度 */ String[] names = {"Tom", "Andy", "Jerry", "Wang", "John"}; int l = names.length; System.out.println(l); /* * 利用长度遍历数组的元素 */ // 5 for(int i = 0; i<names.length; i++){ //i = 0 1 2 3 String name = names[i]; System.out.println(name); } } }
存储一副扑克牌
String[] cards=new String[54]; String[] rank={"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; for(int i=0;i<rank.length; i=i+1){ cards[i] = "黑桃" + rank[i]; cards[13+i] = "红桃" + rank[i]; cards[13+13+i] = "梅花" + rank[i]; cards[13+13+13+i] = "方块" + rank[i]; } 周五,上边的扑克牌数组构建方式逻辑理解不了的话就请把cards数组写成下边方式: String[] cards={ "红桃3","红桃4","红桃5","红桃6","红桃7","红桃8","红桃9","红桃10","红桃J","红桃Q","红桃K","红桃A","红桃2", "黑桃3","黑桃4","黑桃5","黑桃6","黑桃7","黑桃8","黑桃9","黑桃10","黑桃J","黑桃Q","黑桃K","黑桃A","黑桃2", "梅花3","梅花4","梅花5","梅花6","梅花7","梅花8","梅花9","梅花10","梅花J","梅花Q","梅花K","梅花A","梅花2", "方块3","方块4","方块5","方块6","方块7","方块8","方块9","方块10","方块J","方块Q","方块K","方块A","方块2", "大王" ,"小王" };
package day05; public class Demo02 { public static void main(String[] args) { /* * 创建一副扑克牌 */ //点数(rank)数组 String[] rank = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"}; //扑克牌数组, 预留54个数组元素 String[] cards = new String[54]; //创建扑克牌添加到cards数组中 // 13 for (int i = 0; i < rank.length; i++) { //value 代表每个点数值 String value = rank[i]; //创建了 黑桃3 黑桃4 ... 黑桃2 //放到扑克牌数组中 cards[i] = "黑桃" + value; cards[i + 13] = "红桃" + value; cards[i + 13 + 13] = "梅花" + value; cards[i + 13 + 13 + 13] = "方块" + value; } cards[52] = "小王"; cards[53] = "大王"; //检查扑克牌数组的内容 for (int i = 0; i < cards.length; i++) { String card = cards[i]; System.out.print(card + " "); if ((i + 1) % 13 ==0){ System.out.println(); } } } }
随机数
Java 提供了随机数API
使用步骤:
-
import java.util.Random;
-
Random random = new Random();
-
int n = random.nextInt(8); // 8是边界范围, 当写8的时候产生: 0 ~ 7 的随机数
package day05; import java.util.Random; public class Demo03 { public static void main(String[] args) { /* * 测试随机数 */ Random random = new Random(); int n = random.nextInt(8); System.out.println(n); } }
抽取一张扑克牌
扑克牌的位置0~53: random.nextInt(cards.length)
洗牌
package com.zyq;
import java.util.Arrays;
import java.util.Random;
public class Cards {
public static void main(String[] args) {
//1.创建一副扑克牌放入cards数组中
String[] rank = {"3", "4", "5", "6", "7", "8", "9",
"10", "J", "Q", "K", "A", "2"};//点数(rank)数组
//扑克牌数组, 预留54个数组元素
String[] cards = new String[54];
//创建扑克牌添加到cards数组中
// 13
for (int i = 0; i < rank.length; i++) {
//value 代表每个点数值
String value = rank[i];
//创建了 黑桃3 黑桃4 ... 黑桃2
//放到扑克牌数组中
cards[i] = "黑桃" + value;
cards[i + 13] = "红桃" + value;
cards[i + 13 + 13] = "梅花" + value;
cards[i + 13 + 13 + 13] = "方块" + value;
}
cards[52] = "小王";
cards[53] = "大王";
//2.调用printCards()方法打印cards数组中生成的每张牌
printCards(cards);
//3.洗牌: 随机从数组中取出一张牌和第i张牌进行交换(i是一个不断减小的数组下标)
Random random = new Random();
for(int i=cards.length-1; i>=1; i--){
int j = random.nextInt(i);
String t = cards[i];
cards[i] = cards[j];
cards[j] = t;
}
//4.调用printCards()方法打印洗牌后的数组cards中的每张牌
printCards(cards);
//5.发牌: 将cards数组中的每张牌按顺序取出依次放入wang、lee、zhang三个数组中
String[] wang = new String[17];
String[] lee = new String[17];
String[] zhang = new String[17];
for (int i=0; i<17; i++){
wang[i] = cards[i*3];
lee[i] = cards[i*3+1];
zhang[i] = cards[i*3+2];
}
//6.显示一下每个人手里的牌
System.out.println("老王手上的牌是:"+Arrays.toString(wang));
System.out.println("老李手上的牌是:"+Arrays.toString(lee));
System.out.println("老张手上的牌是:"+Arrays.toString(zhang));
}
//打印cards数组中的每张牌
private static void printCards(String[] cards) {
//检查扑克牌数组的内容
for (int i = 0; i < cards.length; i++) {
String card = cards[i];
System.out.print(card + " ");
if ((i + 1) % 13 ==0){
System.out.println();
}
}
System.out.println();
}
}
发牌
练习题: