在编程和学生方面,我只是个新手。我的任务是创建一个乘法表的二维数组,但我似乎得到了同样的错误:java.lang.arrayindexoutofboundsexception 10
请帮助。
下面是代码:
public class MulTtable {
// rows and columns are declared as constants
static final int ROWS= 10;
static final int COLUMNS= 10;
// prints the content of the 2-D array
public static void printTable(char mt[][]){
int n=ROWS;
for (int row = 0; row < ROWS; row++){
for (int COLUMNS = 0; COLUMNS < COLUMNS; COLUMNS++){
{
System.out.print(mt[ROWS][COLUMNS] + "\t");
}
System.out.println();
}
}
}
public static void main(String[] args){
int mTable[][]= new int[ROWS][COLUMNS];
for ( int ROWS = 0; ROWS < mTable.length; ROWS++){
for ( int COLUMNS = 0; ROWS < mTable[ROWS].length; COLUMNS++){
if (ROWS<11) // stores integer 1+1 in the first row of the array
mTable[ROWS][COLUMNS] = 1+1;
else
mTable[ROWS][COLUMNS] = (ROWS)* (COLUMNS);
}
}
}
}
干杯,
我
谢谢!
答案 0 :(得分:0)
它不打印任何东西,因为你的打印表方法中有一个{
太muc而且你的命名必须改变......工作代码:
static final int ROWS = 10;
static final int COLUMNS = 10;
public static void main(String[] args) {
int mTable[][] = new int[ROWS][COLUMNS];
for (int ROWS = 0; ROWS < mTable.length; ROWS++) {
for (int COLUMNS = 0; COLUMNS < mTable[ROWS].length; COLUMNS++) {
if (ROWS < 11)
mTable[ROWS][COLUMNS] = 1 + 1;
else
mTable[ROWS][COLUMNS] = (ROWS) * (COLUMNS);
}
}
printTable(mTable);
}
public static void printTable(int[][] mTable) {
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLUMNS; col++) {
System.out.print(mTable[row][col] + "\t");
}
System.out.println();
}
}
答案 1 :(得分:0)
首先,你的循环变量隐藏了类静态变量。这是一个糟糕的代码。 ROWS也是一个for循环计数器和一个静态类成员。代码可以正常工作,但是你会对你想要引用的东西感到困惑。
现在在print方法中,有一个arrayIndexOutOfBound,即你正在访问数组边界之外的元素
for (int row = 0; row < ROWS; row++){
for (int COLUMNS = 0; COLUMNS < COLUMNS; COLUMNS++){
System.out.print(mt[ROWS][COLUMNS] + "\t");
System.out.println();
在最里面的sys-out语句中,您正在引用ROWS
(大写),您需要使用row
,即外部循环变量。
还要更改内部for循环变量名称。条件COLUMNS&lt; COLUMNS完全令人困惑;
答案 2 :(得分:0)
这是打印一个propper乘法表的那个:
public class MulTtable
{
static final int ROWS = 15;
static final int COLUMNS = 15;
public static void printTable(int mt[][])
{
for(int r = 0; r < mt.length; r++)
{
for(int c = 0; c < mt[r].length; c++)
{
{
System.out.print(mt[r][c] + "\t");
}
}
System.out.println();
}
}
public static void main(String[] args)
{
int mTable[][] = new int[ROWS][COLUMNS];
for(int r = 0; r < ROWS; r++)
{
for(int c = 0; c < COLUMNS; c++)
{
if(r < 1)
{
mTable[r][c] = c;
}
else if(c < 1)
{
mTable[r][c] = r;
}
else
{
mTable[r][c] = r * c;
}
}
}
printTable(mTable);
}
}