2012-02-20 24 views
-1

私は何時間もグーグルをしてきたし、私が間違ってやっていることを把握していない、私は本当にJavaで悪いです!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); 
} 

} 

ご協力いただきありがとうございます。

+0

コマンドライン引数はメインメソッド –

+2

から来ます。これはコンパイルしないでください。デフォルトのコンストラクタを持たないW1Graphicsのインスタンスを作成しようとしています。あなたが 'args'を渡したい、つまり' W1Graphics w = new W1Graphics(args);のように見えます。 –

+0

本当にありがとう、私はそれを認識していないと信じられない。それは今働く。 –

答えて

1

コマンドライン引数は、W1Graphicsメソッドではなくmainメソッドに与えられたものです。以下

このコード:

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

はあなたの主な方法にする必要があります。そして、あなたはW1Graphicsコンストラクタにxとyパラメータを渡すべきです。

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

EDIT:orもちろんあなたのコンストラクタにargを渡します!メソッドの機能性を分離するために、mainメソッドの構文解析コマンドライン引数をそのまま残す方がプログラミングの面では優れています。 W1Graphicsコンストラクタではコマンドライン引数の例外を処理する必要はありませんが、呼び出す前にmainメソッドで処理する必要があります。

1

あなたの行には:W1Graphics w = new W1Graphics();引数なしのコンストラクタを呼び出します。あなたがしたいのは、String[]型を取るコンストラクタを呼び出すことです。 W1Graphicsオブジェクトを作成する行をW1Graphics w = new W1Graphics(args);に変更します。

関連する問題