我是Java的新手,我很难搞清楚如何从命令提示符中获取参数并在我的代码中传递它们。我能够将它们放入我的代码的主要方法中,但我宁愿在Chessboard类中使用它们。有一个公共静态int n是硬编码的,但我希望它是我作为参数发送的任何东西。我后来会为女王的位置采取初步立场,所以我希望这个过程类似;如果我得到这方面的帮助,希望我可以使用相同的技术。
public class Chessboard {
public static void main(String[] args) {
System.out.println("Hello World");
Chessboard board = new Chessboard(); //creates a Chessboard object
board.start();
}
public static int n = 8;
private static int board[][]; //this is the Chessboard array
private int numQueens; //this is the number of queens on the board
public Chessboard(){
numQueens = 0; //initialized to zero, no queens on board to start yet
board = new int[n][n]; //nxn 2D array of zeros
for (int j = 0; j < n; j++)
{
for (int k = 0; k < n; k++)
{
board[j][k] = 0; //redundant, but I need to learn how to
} //initialize. this manually puts zeros into
} //the array
}
......代码从这里继续,但我认为没有必要。如果是的话,我很乐意上传它。
感谢您的时间。
答案 0 :(得分:1)
这就是我要做的事。
public static void main(String[] args) {
try {
int firstArg = Integer.parseInt(args[0]);
Chessboard board = new Chessboard(firstArg);
// Do some stuff with the chessboard here.
}
catch(NumberFormatException e) {
System.out.println("That's not a number");
}
}
这将查看第一个命令行参数并尝试将其转换为int
。如果成功,它会将int
传递给Chessboard
的构造函数,以便为您创建一个对象。
此代码段还显示了如果第一个命令行参数实际上不是数字,您可以如何提供运行的代码。
答案 1 :(得分:0)
请注意,main方法已经在您的Chessboard类中。如果您想将n
变量保留为静态变量,则可以在main方法中执行此操作。
n = Integer.parseInt(args[0]);
如果你让n
成为一个实例变量而不是静态的,那么David Wallace给出的答案将指向正确的方向。
答案 2 :(得分:-1)
在你的棋盘类中创建一个
private String[] args;
然后将一个setter添加到Chessboard,如:
public void setArgs(String[] args{
this.args = args;
}
然后把这样的东西放在你的主要内容中:
public static void main(String[] args) {
Chessboard board = new Chessboard();
board.setArgs(args);
board.start();
}