Java passerer kommandolinjeargumenter til metoder

stemmer
3

Jeg skriver et program som tar to ord som kommandolinjeargumenter, gjør noe med dem, og skriver ut resultatet. Jeg skriver en klasse for å håndtere dette, og mitt spørsmål er: hva er den beste måten å passere to ord gitt som kommandolinje argumenter mellom metoder i en klasse? Hvorfor kan jeg ikke bruke den vanlige this.variable = i konstruktøren med args?

Publisert på 31/10/2009 klokken 11:06
kilden bruker
På andre språk...                            


2 svar

stemmer
7

Du kan, hvis du passerer argstil konstruktøren:

public class Program
{
    private String foo;
    private String bar;

    public static void main(String[] args) 
    {
        Program program = new Program(args);
        program.run();
    }

    private Program(String[] args)
    {
        this.foo = args[0];
        this.bar = args[1];
        // etc
    }

    private void run()
    {
        // whatever
    }
}
Svarte 31/10/2009 kl. 11:08
kilden bruker

stemmer
1

Hvis du forventer noen argumenter som skal sendes på kommandolinjen, kan du gjøre ting litt mer robust og sjekke at de faktisk passert. Deretter passerer den argsmatrise eller verdiene til en konstruktør. Noe sånt som dette:

public class App {
    private final String arg0;
    private final String arg1;

    public static void main(String[] args) {
        if (args.length < 2) {
            System.out.println("arguments must be supplied");
            System.out.println("Usage: java App <arg0> <arg1>");
            System.exit(1);
        }
        // optionally, check that there are exactly 2 arguments
        if (args.length > 2) {
            System.out.println("too many arguments");
            System.out.println("Usage: java App <arg0> <arg1>");
            System.exit(1);
        }

        new App(args[0], args[1]).echo();
    }

    public App(String arg0, String arg1) {
        this.arg0 = arg0;
        this.arg1 = arg1;
    }

    public void echo() {
        System.out.println(arg0);
        System.out.println(arg1);
    }
}
Svarte 31/10/2009 kl. 14:40
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more