简体   繁体   中英

How can I pass these parameters (java)?

I am very new to Java, and I'm having a difficult time figuring out how to take arguments from the command prompt and pass them around in my code. I am able to get them into the main method of my code, but I'd rather have them in the Chessboard class. There is a public static int n that is hard coded, but I would like it to be whatever I send in as arguments. I'll later be taking an initial position for a queen's placement, so I'm hoping the process will be similar; if I get help with this, hopefully I can use the same technique for that.

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
}

...and the code continues from here, but I don't think it's necessary. If it is, I'm happy to upload it.

Thank you for your time.

Here's what I'd do.

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");
    }
}

This looks at the first command line argument and tries to convert it to an int . If it succeeds, it passes that int to the constructor of Chessboard to make an object for you to use.

This snippet also shows how you can provide code that runs if the first command line argument isn't actually a number.

Notice that the main method is already in your Chessboard class. If you want to leave your n variable as static, you can just do this in the main method.

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

If you make n an instance variable instead of having it be static, then the answer that David Wallace gave will point you in the right direction.

In your Chessboard Class create an

private String[] args;

Then add an setter to Chessboard like:

public void setArgs(String[] args{
    this.args = args;
}

Then put something like this in your main:

public static void main(String[] args) {

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM