1

乘法表赋值

我正在尝试分配用户输入数组大小并添加数字 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.fillRows(MultTable.java:41)的线程“主”java.lang.NullPointerException异常在 MultTable.main(MultTable.java:13)

4

1 回答 1

0

这段代码有几个问题。首先,您得到的异常是因为rows当您尝试访问lengthin时为 null 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在所有这些上使用。

于 2013-04-18T23:22:51.027 回答