乘法表分配
我正在尝试分配用户输入数组大小并添加数字1 - 数组的大小,然后打印出列和行的数组,但我认为我没有做到这一点:
import java.util.Scanner;
public class MultTable
{
public static int[]rows;
public static int[]cols;
public static void main (String args[])
{
intro();
getRows();
getCols();
fillRows();
fillCols();
printTable();
}
public static void intro()
{
System.out.print("Welcome to the Multiplication Table program!");
}
public static void getRows()
{
Scanner input=new Scanner (System.in);
System.out.print("\nEnter number of row:");
int sizerow=input.nextInt();
int rows[]=new int[sizerow];
}
public static void getCols()
{
Scanner input=new Scanner(System.in);
System.out.print("Enter number of columns:");
int sizecol=input.nextInt();
int cols[]=new int[sizecol];
}
public static void fillRows()
{
for(int i=1;i<=rows.length;i++)
{
int rows[]=new int[i];
}
}
public static void fillCols()
{
for(int j=0;j<cols.length;j++)
{
int cols[]=new int[j];
}
}
public static void printTable()
{
System.out.print("\n\nHere is your %dx%d multiplication table:");
System.out.print(cols);
System.out.print("--------");
for(int i=1; i<=rows.length;i++)
{
for(int j=1;j<=cols.length;j++)
{
System.out.print(rows[i]*cols[j]);
}
}
}
}
一直说:
MultTable.main(MultTable.java:13)中的MultTable.fillRows(MultTable.java:41)中的线程“main”java.lang.NullPointerException中的异常
答案 0 :(得分:0)
此代码存在一些问题。首先,您获得的异常是因为当您尝试访问rows
中的length
时fillRows()
为空。
for(int i=1;i<=rows.length;i++)
^^^^
这是因为在int rows[]=new int[sizerow];
中使用getRows()
时,它正在初始化一个新的局部变量,只对getRows()
函数可见。您可能希望改为rows = new int[sizerow];
。这将初始化上面声明的成员变量。同样对于cols。
在fillRows()
和fillCols()
的循环中正在进行类似的错误分配。对于那些人,你可能想要做rows[i] = i + 1;
之类的事情。
另外,仔细检查所有循环的边界。其中一些从1开始,有些为0.其中一些使用<= length
,一些< length
。你可能想从0开始并在所有这些上使用< length
。