/*
* * 模拟生成车牌号的程序.程序运行.生成十个随机的车牌子.打印在控制台.
* 举例: 京C.85100 / 津K.45H88
* 要求:1.车牌子为京字或津字开头,后面字母为 C E F H J K中随机.
* 2.号码为五位.数字和大写字母随机.(数字为0-9, 字母为A65-G71)
* 3.定义生成号码的方法.返回车牌号字符串.
* 4.循环调用10次生成号牌方法,生成5块津牌,5块京牌,并全部打印在控制台s
*/
public class CarBtand {
// 定义数组1存储 京 津
// 定义数组2存储 c e f h j k
// 定义集合 存储 0-9 a-g
public static void main(String[] args) {
String[] arr1 = { "京", "津" };
char[] arr2 = { 'A', 'B', 'C', 'D', 'E', 'F', 'G' };
ArrayList<Integer> list = new ArrayList<>();
addList(list);
// 输入车牌地址 1=京 2=津
int a = new Scanner(System.in).nextInt();
int y = 0;
// 生成车牌的次数
int x = new Scanner(System.in).nextInt();
while (y < x) {
int b = new Random().nextInt(arr2.length);
String i = "";
if (a == 1) {
i = arr1[0];
}
if (a == 2) {
i = arr1[1];
}
System.out.print(i + arr2[b]);
// 索引所存数组
int[] arr = arrRan();
for (int j = 0; j < arr.length; j++) {
if ((list.get(arr[j])) > 64) {
int l = list.get(arr[j]);
char p = (char) l;
System.out.print(p);
} else {
System.out.print(list.get(arr[j]));
}
}
System.out.println();
y++;
}
}
// 索引值
private static int[] arrRan() {
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
int x = new Random().nextInt(18);// 0-17
arr[i] = x;
}
return arr;
}
// 生成数组录入
public static void addList(ArrayList<Integer> list) {
for (int i = 0; i < 10; i++) {
list.add(i);
}
for (int i = 65; i < 72; i++) {
list.add(i);
}
}
}
======================================
异常: 有时候没问题,有时候打印的时候会出现这样的说索引越界了,下面的我打印几次中有的正常有的显示如下,找了半天没找见,求大牛,另外这个题没做完,我回头还要做,希望大牛能帮我指出是哪里错了,然后我再做下面的.
1
10
Exception in thread "main" 京Djava.lang.IndexOutOfBoundsException: Index: 17, Size: 17
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at TextPritise.CarBtand.main(CarBtand.java:53)
0GFFA
京CGDE02
京GFEF55
京D