2017-01-31 2 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이 있습니다. 이 변수 밖에서는이 변수를 볼 수 없습니다.

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을 선언하는 것입니다. 내 예제에서 worp1은 클래스의 속성이며 클래스가 구현하는 모든 메서드에서 볼 수 있습니다.

+0

나는 당신이 의미하는 것을 안다. 그러나 이것은 내가 의미하는 바가 아니다. 내 메서드는 worp1 = gooi1 * 6 + 1 이므로 1과 6 사이의 숫자가됩니다. JButton은이 메서드를 호출하여 숫자가 변경되도록합니다 (예 : 주사위). 이제 주사위에서 숫자를 끈으로 사용하고 싶습니다. 나는 당신이 나를 나쁜 영어로 이해하기를 바랍니다 :) – Jerriet

0

나는 당신이 Math.random()의 String 형 변수를 원한다고 생각한다. 이렇게 해보십시오 : String var1 = Math.random() + ""; 문자열 형식의 변수를 만듭니다.

0

제대로 이해했다면 drawString 메서드에서 worp1 값을 그려야합니다. 하지만 drawString 메서드는 자바 그래픽 라이브러리에 속합니다. 즉 두 가지 형식으로 사용할 수 있습니다.

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) : g.drawString ("U heeft 그래서

,이 같은 문자열 형태로 당신에게 warp1 매개 변수의 double 값을 변환해야 gegooid : "+ Double.toString (warp1), 50, 30);

잘하면 도움이됩니다.

관련 문제