如何从java中的main方法调用构造函数?

时间:2014-10-31 12:16:32

标签: java

我需要编写一个程序来解决八个皇后问题,我不知道该怎么做,但我已经开始使用多维数组了。问题是我不知道如何从主类调用构造函数,只是为了检查数组是否构造正确,或者如何从方法中调用它。请帮忙吗?这是代码,它返回null。

import javax.swing.JOptionPane;


public class Eightqueens

{
    private static int[][] board;

    public static void main(String[] args) 
    {
        JOptionPane.showMessageDialog(null,board);
    }

    public Eightqueens (int size)
    {
        size = 8;
        board = new int[size][size];

        int row;
        int col;

        for (row = 0; row < size; row++)
            for (col = 0; col < size; col++)
                board[row][col] = 0;
    }

}

7 个答案:

答案 0 :(得分:5)

你应该使用传递给构造函数的值,而不是覆盖它:

...
private int[][] board;
...
public Eightqueens (int size)
{
    size = 8; // remove this
    ...
}

public int[][] getBoard() 
{
    return board;
}

public static void main(String[] args) 
{
    Eightqueens equeens = new Eightqueens (8); // create an instance
    JOptionPane.showMessageDialog(null,equeens.getBoard()); // use accessor to get
                                                            // board
}

此外,在构造函数中初始化静态变量(board)没有意义,因为您创建的每个新实例都会覆盖其值。我将其更改为非静态,然后您可以使用访问器方法(equeens.getBoard())从您的实例中获取它。

答案 1 :(得分:0)

要调用构造函数,必须“构造”一个​​新对象。

Eightqueens obj = new Eightqueens(5);

答案 2 :(得分:0)

当您使用new关键字实例化您的类对象时,您可以调用构造函数。 像这样:

public static void main(String[] args) {
    Eightqueens eq = new Eightqueens(5);
}

答案 3 :(得分:0)

您可以通过创建一个新的Eightqueens实例来调用构造函数

int size = 1; // anything
new Eightqueens(size);

答案 4 :(得分:0)

此代码不返回 null,它不会返回任何内容。你永远不会打电话给你的构造函数:

public static void main(String[] args) {
    Eightqueens eq = new Eightqueens(5);
}

答案 5 :(得分:0)

您无法再次调用构造函数。它只在代码的开头运行。

但是,您可以创建它的新实例以再次运行它。

答案 6 :(得分:0)

对话框为空,因为 board 的值为 nothing ,这是因为它尚未初始化。 board 在构造函数方法中获取一个值。因此,您必须在显示对话框之前调用构造函数方法。

public static void main(String[] args) 
{
      Eightqueens eq = new Eightqueens(8);
      JOptionPane.showMessageDialog(null,board);
}

此外,在构造函数方法中,您将覆盖之前给出的 size 的值。因此,实际上不需要将变量提供给该方法。所以,要么删除该行:

size = 8;

或者,更改构造函数方法以不输入值,如下所示:

public Eightqueens ()
{
    int size = 8;
    board = new int[size][size];
    int row;
    int col;

    for (row = 0; row < size; row++)
        for (col = 0; col < size; col++)
              board[row][col] = 0;
}