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

Это из-за объема программы. Вы видите, что в языках программирования переменные ограничены. В основном у вас есть переменная worp1, охваченная только внутри метода 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 - это свойства класса, и он будет виден из каждого метода, который реализует ваш класс.

+0

Я знаю, что вы имеете в виду, но это не значит, что я имею в виду. в моем методе worp1 = gooi1 * 6 + 1 поэтому он становится числом от 1 до 6. JButton называет этот метод, поэтому число меняется, как и Dice. Теперь я хочу, чтобы число из кости было как нить. Надеюсь, вы меня понимаете в моем плохом английском :) – Jerriet

0

Я думаю, вы хотите переменную типа String из Math.random(); Итак, попробуйте следующее: String var1 = Math.random() + ""; для создания переменной типа строки.

0

Если я правильно понял, вы пытаетесь нарисовать значение worp1 в методе drawString. Но метод drawString принадлежит библиотеке графики Java. Это означает, что вы можете использовать его в двух формах;

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 параметра в строку форме, как это: g.drawString («U heeft gegooid: "+ Double.toString (warp1), 50, 30);

Надеюсь, это поможет.