字符串无法解析java

时间:2013-11-13 21:50:58

标签: java arrays string loops random

我正在尝试制作一个由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"       
}

}

2 个答案:

答案 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));