Как получить доступ к последнему значению переменной из другого класса? Программа выполняется за 30 секунд, а в конце 30 секунд она печатает переменные.
Класс игры:
public class Game {
public int true_num = 0, false_num = 0;
public Game() throws InterruptedException, IOException {
new TimerDemo(30);
while (true) {
play(); // true_num/false_num are changed in this method.
}
}
}
TimerDemo класс:
public class TimerDemo {
Toolkit toolkit;
Timer timer;
public TimerDemo(int seconds) {
toolkit = Toolkit.getDefaultToolkit();
timer = new Timer();
timer.schedule(new RemindTask(), seconds * 1000);
}
class RemindTask extends TimerTask {
@Override
public void run() {
System.out.println("Time's up!");
JLabel lb = new JLabel("true_num = " + true_num
+ " and " + "false_num = " + false_num);
lb.setFont(new Font("Arial", Font.BOLD, 18));
UIManager.put("OptionPane.minimumSize", new Dimension(150, 90));
JOptionPane.showMessageDialog(null, lb, "aaa", 1);
toolkit.beep();
System.exit(0);
}
}
}
Как получить доступ к последнему значению переменных в функции воспроизведения в классе Game? вызывается класс вызова play function запускается снова, что не должно.
@zapal, я сделал, и все заработало: private final Game get_val; private RemindTask(Game1 aThis) { get_val = aThis; } и get_val.true_num. но игра снова запускается по истечении 30 секунд.




Без ссылки из Game, я добавил Game.total и определил сумму летучий в Game.
В TimerDemo:
public void run() {
System.out.println("Time's up! Total = " + Game.total + "true_num = " + Game.true_num + "false_num = " + Game.false_num);
}
В игре:
public static volatile int true_num = 0, false_num = 0, total = 0;
Дайте TimerDemo ссылку на экземпляр Game, например. через конструктор
new TimerDemo(30, this);Такжеtrue_numтехнически должен бытьvolatile, если вы хотите гарантировать, что задача таймера может считывать фактическое значение