我正在尝试制作一个由12个不同的随机字母组成的12 x 12表格,但用户可以选择是否包含4个不同的字母,3个或2个...但是我收到的错误是字符串无法解决,我不知道为什么......请帮忙...
import java.util.Scanner;
import java.util.Arrays;
import java.util.Random;
public class PlayingArea {
public static void main(String[] args){
int N = letters.length();//error here "letters cannot be resolved"
Random r = new Random();
Scanner input = new Scanner(System.in);
System.out.println("How many regions would you like (2- 4)");
int region = input.nextInt();
if (region == 4){
String letters= "EFGH";
}
if (region == 3){
String letters= "EFG";
}
else if (region == 2){
String letters= "EF";
}
else { System.out.println("You inputed a wrong value, try again...");
}
char [][] letter = new char[12][12];
for (int j = 0; j < letter.length; j++){
for(int i=0; i < letter.length; i++) {
letter[i][j] = letters.charAt(r.nextInt(N)) ;
}
}
for (char[] letterRow : letter)
System.out.println(Arrays.toString(letterRow)); //error here "letters cannot be resolved"
}
}
答案 0 :(得分:0)
删除导致错误的行并改为执行此操作:
String letters;
if (region == 4){
letters= "EFGH";
}
if (region == 3){
letters= "EFG";
}
else if (region == 2){
letters= "EF";
}
else {
System.out.println("You inputed a wrong value, try again...");
}
int N = letters.length();
您收到错误的原因是因为字母尚不存在,因此您无法在此处拨打letters.length()
。你应该得到一个NullPointerException。
我还建议处理不输入2,3或4的用户,因为代码无论如何都会遇到错误。您可以将{/ 1}}中的if / else语句放在while循环中,例如:
letters.length() < 2
也许你可以找到一个更好的条件,但这应该足够了。
答案 1 :(得分:0)
你的字母字符串超出了范围。在设置之前尝试初始化它。
if (region == 4){
String letters= "EFGH";
}
System.out.println(letters.charAt(0));
将产生错误,因为字母是在if语句的范围内定义的。如果你想要以下内容,可以在它之外使用。
String letters = "";
if (region == 4){
letters= "EFGH";
}
System.out.println(letters.charAt(0));