Java, новичок нуждается в помощи, используя аргументы командной строки - PullRequest
0 голосов
/ 20 февраля 2012

Я часами гуглял и не смог понять, что я делаю не так, извините, я действительно плох в 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 ]

1 голос
/ 20 февраля 2012

Аргументы командной строки - это аргументы, которые передаются основному методу, а не методу W1Graphics.

Этот код ниже:

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

должно быть в вашем основном методе. Затем вы должны передать параметры x и y в конструктор W1Graphics.

EX:

публичный 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);

РЕДАКТИРОВАТЬ : или, конечно, передать аргументы вашему конструктору! но в практике программирования лучше оставить аргументы командной строки для основного метода, чтобы разделить функциональность метода. Вы не хотите обрабатывать исключения аргументов командной строки в конструкторе W1Graphics, но в методе main еще до того, как вызываете его.

1 голос
/ 20 февраля 2012

В вашей строке: W1Graphics w = new W1Graphics(); Вы вызываете конструктор без аргументов.То, что вы хотите сделать, это вызвать конструктор, который принимает String[] тип.Измените строку, где вы создаете объект W1Graphics, на W1Graphics w = new W1Graphics(args);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...