【发布时间】:2015-01-05 06:17:26
【问题描述】:
static String[] checklist = {"FOR", "AXE", "JAM", "JAB", "ZIP", "ARE", "YOU", "JUG", "JAW", "JOY"};
public static void main (String[] args)
{
int letterRange=26;
int numberRange=10;
String x;
String letters = new String(Letters(letterRange));
int numbers = Numbers(numberRange);
System.out.println(" The randomly generated License Plate is: " +letters + "-" +numbers);
}
public static char[] Letters(int lRange)
{
char[] letters = new char[3];
Random r = new Random();
boolean match = false;
boolean resultOk = false;
String result;
//Generating Random strings (character array)
for (int x=0; x<letters.length; x++)
{
letters[x] = (char)(r.nextInt(26) + 65);
}
//Logic for possibility exclusion
while (true)
{
if (match == true)
{
for (int x=0; x<letters.length; x++)
{
letters[x] = (char)(r.nextInt(26) + 65);
}
}
result = new String(letters);
for (int i = 0; i < checklist.length; i++)
{
if (result == checklist[i])
{
match = true;
break;
}
if ((i == checklist.length - 1) && (match == false))
{
resultOk = true;
break;
}
}
if (resultOk == true)
{
break;
}
}
return letters;
}
public static int Numbers(int nRange)
{
int result = 0;
int[] numbers = new int[3];
Random r = new Random();
for (int x = 0; x < numbers.length; x++)
{
numbers[x] = r.nextInt(nRange);
}
for (int i = numbers.length; i >= 1; i--)
{
result += numbers[i-1] * (10 * (numbers.length - i));
}
return result;
}
基本上,我正在尝试创建一个带有三个大写字母(65,ASCII 码)和三个数字的随机车牌。当我运行程序时,static int z=Integer.parseInt(y); 出现异常。所以基本上我所做的是将String数组转换为String,然后将String转换为int,然后将int转换为char,然后我做了一个while循环(说如果字母不等于b),那么它应该可以工作。
你能帮帮我吗?另外,我应该有两种方法吗?我想用一个盒子把车牌围起来,让它看起来很好看。
【问题讨论】:
-
你能告诉我,这个
Integer.parseInt(Arrays.toString(x))应该返回什么吗?或者FOR, AXE, JAM, ...的整数是多少? -
暂时离开这个框,预期的输出是什么?你能描述一下你在每一行上做了什么吗,因为我在这里看到了一些严重的混乱。
-
@Monty
Arrays.toString(x)调用创建字符串"[FOR, AXE, JAM, JAB, ZIP, ARE, YOU, JUG, JAW, JOY]"。这看起来不像是一个数字。您要求Integer.parseInt将其解释为数字并将其放入z。它不知道你想要什么号码,我们也不知道。如果您不想将这组单词解释为数字,请不要调用Integer.parseInt。 -
Monly,你没有编写代码示例?
-
@owlstead,谢谢,但如果没有指南,我不会得到它
标签: java