2015-11-30 49 views
0

这是我一直试图解决几个小时的学校的任务,我们要创建一个包含3行10列瑞典字母表的矢量图。显示图表并显示它在相同的空间中反转,字母表应该是,它应该是一个字符而不是字符串。现在看起来我在输出中只有三列,所以大部分字母都没有。 这是怎么回事?为什么当我而不是使用“alpha.length”使用3和10给我一个“java.lang.ArrayIndexOutOfBoundsException”并且不会打印出反向列表?Java 2D图表不会打印出

public static void main(String[] args) { 

    char [][]alpha ={ 
     {'A','B','C','D','E','F','G','H','I','J'}, 
     {'K','L','M','N','O','P','Q','R','S','T',}, 
     {'U','V','W','X','Y','Z','Å','Ä','Ö',}, 
     }; 




    for (int i = 0; i < alpha.length; i++){ 
     for (int j = 0; j < alpha.length; j++){ 
     System.out.print(alpha [i][j] + " "); 
      } 
     System.out.println(); 

      } 

     for (int r = alpha.length-1; r >= 0; r--){ 
     for (int s = alpha.length-1; s >=0; s--){ 
     System.out.print(alpha[r][s]+ " "); 
    } 
     System.out.println(); 


} 

} //main 
+0

我推荐阅读关于多维数组和IndexOutOfBoundException。您需要了解如何应对每个单一元素,那么错误将是小菜一碟。 –

+1

'alpha'是一个'char []'的数组,其中包含'alpha.length'(= 3)多个数组,每个'alpha [i]'是'alpha'的一个(不同的)数组, .length(10左右)许多'chars'。如果你嵌套你的循环,你将不得不使用正确的长度。 – zapl

+0

你真的要在这里使用多维数组吗? 如果我是对的,你的字母表包含29个字母不是30,所以必须小心,你不能用于在每种情况下达到10的语句。 我会将这些字母存储在一个单维数组中。浏览该数组并观察循环变量,即i除以10得出一个整数(i%10 == 0)。如果是这样,请插入一个新行。 –

回答

0

alpha包含3列,所以它的长度是3 现在您的代码通过一个3x3大小的数组去,这就是为什么它只能打印3列(如zapl在评论中提及)。

尝试是这样的:

... 
    for (int i = 0; i < alpha.length; i++){ 
     for (int j = 0; j < alpha[i].length; j++){ 
      System.out.print(alpha [i][j] + " "); 
     } 
     System.out.println(); 
    } 

    for (int r = alpha.length-1; r >= 0; r--){ 
     for (int s = alpha[r].length-1; s >=0; s--){ 
      System.out.print(alpha[r][s]+ " "); 
     } 
     System.out.println(); 
    } 
... 

这样,它就会像alpha[0][0](A),然后alpha[0][1](B)... alpha[0][9](J),alpha[1][0](K),alpha[1][1](L).. alpha[1][9](T),alpha[2][0](U)...至alpha[2][8](Ö)。 而且它是相反的顺序。

还要注意数组末尾的逗号,你不需要它们。 (我的意思是在'T'和'Ö'之后)。