Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何传递这些参数(java)?_Java_Parameters_Arguments_Parameter Passing - Fatal编程技术网

如何传递这些参数(java)?

如何传递这些参数(java)?,java,parameters,arguments,parameter-passing,Java,Parameters,Arguments,Parameter Passing,我对Java非常陌生,我很难弄清楚如何从命令提示符获取参数并在代码中传递它们。我可以将它们放入我代码的主方法中,但我更希望将它们放在Chessboard类中。有一个公共静态int n是硬编码的,但我希望它是我作为参数发送的任何东西。我将在以后为女王的位置做一个初始的位置,所以我希望这个过程将是类似的;如果我在这方面得到帮助,希望我能使用同样的技术 public class Chessboard { public static void main(String[] args) { S

我对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
}
公共类棋盘{
公共静态void main(字符串[]args){
System.out.println(“你好世界”);
棋盘=新棋盘();//创建棋盘对象
board.start();
}
公共静态int n=8;
私有静态整型棋盘[];//这是棋盘数组
private int numQueens;//这是板上的皇后数
公共棋盘(){
numQueens=0;//初始化为零,板上还没有要启动的皇后
board=new int[n][n];//nxn零的二维数组
对于(int j=0;j
…代码从这里继续,但我认为没有必要。如果有,我很乐意上传

谢谢你抽出时间来。

我想这样做

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
的构造函数,以生成供您使用的对象


此代码段还显示了如何提供在第一个命令行参数实际上不是数字时运行的代码。

在Chessboard类中创建一个

private String[] args;
然后在棋盘上添加一个setter,如:

public void setArgs(String[] args{
    this.args = args;
}
然后在你的主屏幕上放一些类似的东西:

public static void main(String[] args) {

    Chessboard board = new Chessboard();
    board.setArgs(args);
    board.start();                                          
}

请注意,主方法已经在棋盘类中。如果希望将
n
变量保持为静态,可以在主方法中执行此操作

n = Integer.parseInt(args[0]);

如果你把
n
作为一个实例变量而不是静态变量,那么David Wallace给出的答案将为你指明正确的方向。

可能的重复我不认为这是该问题的重复。
static
不是一种跨对象通信机制,你应该尽快学会在没有它的情况下生活n尽可能多。可以从查看
Chessboard=new Chessboard(Integer.parseInt(args[0])开始
可能的dup要使其工作,OP还必须从
棋盘
的构造函数的签名中删除参数。我想到了这一点,但他的主要方法已经是创建一个没有任何参数的
棋盘
。我假设他有一个默认构造函数,只是没有把它放在这里。你是100%正确的gh.噢,我只是假设OP发布了未编译的代码,而不是省略了其中的一些。这是一个比我所做的假设好得多的假设。我以后必须记住这一点。谢谢你提供的信息。我已经玩了一段时间了,我遇到了一些问题……因为参数“firstArg”正在传递给我构造函数,我是否需要指定它将在括号中接收一个“int”参数,如“int firstArg”?我的其余代码也有编译错误(另外七个方法)使用变量“n”,我似乎无法修复。有没有办法将“firstArg”传递给我的“public static int n”?当你使用
public Chessboard(int n)
时,你的想法是正确的。我不知道你为什么要在那之后更改你的问题。我终于弄明白了。在主类中,我使用了
Chessboard.n=Integer.parseInt(args[0])
,并在
公共类棋盘中创建了
公共静态int n;
。感谢您的帮助。尽管我没有完全使用它,但它为我指明了正确的方向。