Java,新手需要使用命令行参数的帮助

时间:2012-02-20 01:44:21

标签: java command-line

我一直在谷歌搜索几个小时,并没有设法弄清楚我做错了什么,抱歉,我真的很擅长java!

我有一个绘制网格的基本2D图形程序。起初我使用设定值来设置网格的大小。现在我已经设置了使用在命令行输入的值替换我的设置值的任务。我无法让它发挥作用。请你看看我的代码并告诉我我做错了什么?

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;



public class W1Graphics extends JFrame



{
MyPanel myVeryOwnPanel;

public static void main(String[] args)
{
    W1Graphics w = new W1Graphics();
    w.setVisible(true);

}

public W1Graphics(String[] args)
{

    String a = args[0];
    String b = args[1];
    int x = Integer.parseInt(a);
    int y = Integer.parseInt(b);

    setTitle("Jimmy Hill");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500,300);
    setLocation(300,300);
    myVeryOwnPanel = new MyPanel(x, y);
    add(myVeryOwnPanel);
}

 }

提前感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

在您的行上:W1Graphics w = new W1Graphics();您调用的构造函数没有参数。你想要做的是调用String[]类型的构造函数。将创建W1Graphics对象的行更改为W1Graphics w = new W1Graphics(args);

答案 1 :(得分:1)

命令行参数是给主方法而不是W1Graphics方法的参数。

以下代码:

String a = args[0];
    String b = args[1];
    int x = Integer.parseInt(a);
    int y = Integer.parseInt(b);

应该在您的主要方法中。然后,您应该将x和y参数传递给W1Graphics构造函数。

EX:

public W1Graphics(int x,int y) {

setTitle("Jimmy Hill");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,300);
setLocation(300,300);
myVeryOwnPanel = new MyPanel(x, y);
add(myVeryOwnPanel);

}

当然,在你的主要方法中说出这样的话:

String a = args[0];
    String b = args[1];
    int x = Integer.parseInt(a);
    int y = Integer.parseInt(b);
    W1Graphics w = new W1Graphics(x, y);
        w.setVisible(true);

编辑:或者当然将args传递给您的构造函数!但是为你的main方法留下解析命令行参数是更好的编程习惯,这样你就可以分离方法功能了。您不希望在W1Graphics构造函数中处理命令行参数异常,而是在调用它之前在main方法中处理。