-1

我有个疑问。我正在开发以下代码,它将成为您手动引入的数字的乘法表。我无法得到的是打印表格。我不知道发生了什么,因为据我所知,所有代码都是正确编写的。

public class Tabla 
{

public static void main (String[] args) 
{        
    int n=4;       

    Tabla table = new Tabla ();
    int dato [];
    dato=table.producto(n);        

    for (int j=1;j<=10;j++)
    {System.out.println(dato[j]);}

}



public int [] producto(int num) 
{ 
    int a[]={'0'};

    for (int i=1;i<=10;i++)
    {a[i]=num*i;}

    return a;


}    

}

有任何想法吗??

提前致谢!

**我将代码更改为:

public class Tabla 
{

    public static void main (String[] args) 
    {        
        int n=4;       
        int j;

        Tabla table = new Tabla ();
        int dato[]=new int [10];
        dato=table.producto(n);        

        for (j=0;j<10;j++)
        {System.out.println(dato[j]);
        }

    }



    public int [] producto(int num) 
    { 
        // make a 10-element array
        int a[] = new int[10];

       // fill up the array with products
        for (int i = 0; i < 10; i++)
        {a[i] = num * (i+1); }

        return a;            

    }       
}

奇迹般有效!现在我想知道为什么当我有 for 循环时编译器会抛出“ArrayIndexOutOfBoundsException” for (int i = 1; i <=10; i++)

谢谢您的帮助!:D

4

2 回答 2

5

根据 Wasserman 的回答,您应该写的内容如下:

public int[] producto(int num) 
{
    // make a 10-element array
    int a[] = new int[10];

    // fill up the array with products
    for (int i = 0; i < 10; i++)
        a[i] = num * (i + 1);

    return a;
}

您创建了一个单元素数组,而您希望填充一个 10 元素数组。

于 2013-03-27T23:35:24.410 回答
3

两个问题:

int a[]={'0'};

这一行创建了一个a只有一个元素的数组——不是你要填充的 11——而且,那个元素是 character 的 ASCII 码0,这几乎肯定不是你想要的。

于 2013-03-27T23:25:24.443 回答