我想打个图形
*
***
*****
*******
*****
***
*因为正好学了这个for each,我就想用不规则的数组做一下,语法上好像没错,但报异常,似乎是数组越界,想了半天没想通,特来请教大大们,以下是我的代码,请指教。
public class Arrayprint {
void print(){
int[][] Map = new int[][]{
{1},
{1,1,1},
{1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1},
{1,1,1},
{1}
};
for (int nI=0;nI<7;nI++){

for (int nJ:Map[nI]){
if (Map[nI][nJ]==1)
System.out.print("*");
}
System.out.print("\n");
}
} /**
 * @param args
 */
public static void main(String[] args) {
// TODO 自动生成方法存根
Arrayprint print1 = new Arrayprint();
print1.print();
}}

解决方案 »

  1.   

    public class Arrayprint {
    void print(){
    int[][] Map = new int[][]{
    {1},
    {1,1,1},
    {1,1,1,1,1},
    {1,1,1,1,1,1,1},
    {1,1,1,1,1},
    {1,1,1},
    {1}
    };
    for (int nI=0;nI<7;nI++){ //n表示每次从集合(Map[nI]中取出的元素)
    for (int n:Map[nI]){
    if (n == 1)
    System.out.print("*");
    }
    System.out.print("\n");
    }
    }
    public static void main(String[] args) {
    Arrayprint print1 = new Arrayprint();
    print1.print();
    }
    }帮你改了下,这种数组定义没错,是锯齿数组
      

  2.   

    感谢楼上,运行了一下,通过了。看来是我对“n”这个位置的含义的理解有问题,我以为是原来for循环的遍历变量,现在看来不是,十分感谢,这种概念理解上的错误实在是很难发现并纠正的。对了,这个分是怎么弄的?