Переменная, используемая в лямбда-выражении, должна быть конечной или эффективно конечной? - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь создать небольшую игру как проект, который поможет мне научиться кодировать.В основном я пытаюсь иметь 2 кнопки.Один из которых сгенерирует новое случайное число, а другой позволит вам угадать число.У меня ошибка в том, что я не могу создать Actionlistener, который будет генерировать новый номер при нажатии кнопки, так как он не позволит мне изменить int вне самого выражения Lambda.

Любая помощьдействительно ценится!

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

/**
 * Created by Alex on 10/15/2018.
 */
public class NumberGame
{

    public static void main(String[] args) {
        int gamesNumber = 0;
        int myNumber;

        JFrame gameGUI = new JFrame("Number guess game");
        gameGUI.setSize(400,400);
        gameGUI.setVisible(true);
        gameGUI.setLayout(null);
        gameGUI.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        //Create components for GUI
        JLabel AmIRight = new JLabel();
        JLabel generateNumber = new JLabel();
        JButton chooseNumber = new JButton("Choose");

        JButton generateNumber2 = new JButton("Generate");
        generateNumber2.addActionListener(e -> {
            Random rand = new Random();
            int number = rand.nextInt(10) + 1;
            gamesNumber = number;
            System.out.println(gamesNumber);
        });

        //Calling Methods
        //gamesNumber = GenerateRandomNumber();

        //Adding components to GUI
        gameGUI.add(AmIRight);
        gameGUI.add(chooseNumber);
        gameGUI.add(generateNumber);
        gameGUI.add(generateNumber2);

        //Give components properties
        AmIRight.setBounds(40,100,300,300);
        AmIRight.setText("Push the button below to choose a number to guess!");
        generateNumber.setBounds(60,-100,300,300);
        generateNumber.setText("Push the button below to Generate a number!");
        chooseNumber.setBounds(130,270,100,50);
        generateNumber2.setBounds(130,70,100,50);

    }


}

1 Ответ

0 голосов
/ 15 октября 2018

Вам необходимо определить gamesNumber как поле члена

public class NumberGame
{
    private static int gamesNumber = 0;
    public static void main(String[] args) {
        int myNumber;

        JFrame gameGUI = new JFrame("Number guess game");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...