2017-01-31 22 views
-4

Diceについてはこのスクリプトに関する質問があります。私はMath.randomを使用してメソッドを書いて、今私のプログラムに結果Stringを得たいと思っています。別のメソッドから変数を取得する

ボタンはサイコロを回す必要があります。

私の方法gooienはサイコロを振っていて、1から6の間の数字を返します。 JButtonはこの方法を呼び出してダイスをリロールしています。

今や、文字列に再登録されている番号が必要です。

// paneel met 3 tekstvakken 
class dobbelsteentjes1 extends JPanel { 
    private JButton gooien; 

public dobbelsteentjes1(){ 

    gooien=new JButton ("Gooien"); 
    gooien.addActionListener(new gooienHandler()); 

    add(gooien); 
} 
//inwendige klasse 
class gooienHandler implements ActionListener{ 

public void actionPerformed (ActionEvent e){ 
    gooien(); 
} 

} 
    public void gooien(){ 
    double gooi1, gooi2,worp1; 
    gooi1= Math.random(); 
    gooi2=Math.random(); 
    worp1=gooi1*6+1; 
} 

public void paintComponent (Graphics g) { 
    super.paintComponent(g); 
    g.drawString("U heeft gegooid:" + worp1, 50, 30); 
}}  

+0

申し訳ありませんが、変数+ worp1が動作していないと、エラーが表示されます。私はそれが別の方法であると思います。 – Jerriet

+0

また、エラーと予想される出力を掲示する必要があります。 – Azodious

+0

[mcve]の作成方法を参照してください。あなたの問題を説明してください、これははっきりしていません。また、インデントを見て、 – AxelH

答えて

0

これはプログラムの範囲のためです。あなたはプログラミング言語で変数がスコープされていることがわかります。基本的には、gooien()メソッド内でのみ有効な変数worp1があります。このメソッドの外部でこの変数を見ることはできません。あなたにできることは、このようなあなたのクラス内worp1を宣言することです:

class dobbelsteentjes1 extends JPanel { 
    private JButton gooien; 
    double worp1 = 0; 

その後、あなたの方法は次のようになります。

public void gooien(){ 
    double gooi1, gooi2; 
    gooi1= Math.random(); 
    gooi2=Math.random(); 
    worp1=gooi1*6+1; 
} 

そしてあなたはpaintComponent内でこの変数を使用することができます。私の例では、worp1はクラスのプロパティであり、クラスが実装するすべてのメソッドから可視になります。

+0

私はあなたが何を意味知っているが、これはワット私は意味していません。 私の方法ではworp1 = gooi1 * 6 + 1 になるので、1から6までの数字になります。 JButtonはダイスのように番号が変わるようにこのメソッドを呼び出します。 今、私はサイコロから数字を紐で欲しいです。 私はあなたが私の悪い英語で私を理解してほしい:) – Jerriet

0

私はあなたがMath.random()の文字列型変数を望むと思う。 これを試してください:String var1 = Math.random()+ "";文字列型変数を作成します。

0

私が正しく理解している場合、drawStringメソッドでworp1の値を描画しようとしています。しかし、drawStringメソッドはJava Graphicsライブラリに属しています。つまり、2つの形式で使用できます。

drawString(AttributedCharacterIterator iterator, int x, int y); 

drawString(String str, int x, int y); 

(あなたがここに深く学びたい場合は、ソースである:https://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html

だから、あなたはこのような文字列のフォームにあなたのwarp1パラメータのdouble値を変換する必要があります。 g.drawString(「U heeft gegooid: "+ Double.toString(warp1)、50、30);

うまくいけば、それが役立ちます。

関連する問題