0

我正在尝试在 Java 中创建一个 12 x 12 的表格,它将选择一个随机字母(从给定的字母中),然后将其输出到表格上,但是我无法让它工作。请帮助...这是我的代码的样子:

import java.util.Random;

public class PlayingArea {
public static void main(String[] args){
    String letters= "EFGH"; 
    int N = letters.length(); 
    Random r = new Random(); 
            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)) ; 
        }
    }       

    System.out.print(letter); 
}

}

4

2 回答 2

4

该算法对我来说看起来不错,我认为您可能遇到的问题是没有打印数组的正确字符串表示。您可以尝试将您的打印语句更改为这样的

System.out.print(Arrays.deepToString(letter));

或者更多手动(感谢@Joop Eggen):

for (char[] letterRow : letter) 
    System.out.println(Arrays.toString(letterRow));

这个版本的优点是每个子数组都在自己的一行上,而不是全部混在一行上,它看起来更像你希望的一张桌子。

输出:

[G, E, H, H, H, E, H, F, F, E, H, G]
[E, H, H, H, F, G, E, F, H, F, G, H]
[H, F, G, F, F, F, H, G, G, H, H, G]
[E, E, H, E, F, H, E, F, G, F, F, F]
[F, H, F, E, F, H, G, E, H, F, E, G]
[E, H, F, H, H, H, H, E, G, F, F, E]
[H, G, G, G, H, F, G, E, G, H, E, G]
[H, H, E, E, E, E, G, G, H, H, F, F]
[H, F, F, G, G, G, H, H, H, F, E, H]
[H, H, F, E, G, G, H, E, E, E, F, H]
[H, H, G, F, G, F, G, E, H, F, H, F]
[E, F, E, F, F, F, H, E, G, E, F, E]
于 2013-11-13T21:13:26.843 回答
-1

你的问题似乎在这里:

letters.charAt(r.nextInt(N)) ;

您需要将 nextInt() 返回的数字限制为字符串的长度:

letters.charAt(r.nextInt(letters.length())) ;
于 2013-11-13T21:10:56.380 回答