Если вы определяете ставку как поле в классе, например:
public class Lottery {
private int bet;
public void lottery() {
...
}
public void play() {
...
}
public static void main(String[] args) {
Lottery lottery = new Lottery();
lottery.play();
}
}
тогда ставка доступна во всех методах в классе, но не снаружи.
Нет необходимости делать игру публичной, так что это может оставаться в рамках метода воспроизведения. Хорошей практикой считается предоставление переменным не большей видимости, чем это строго необходимо.
Большинство людей в этом случае не ставят поле, а передают его в качестве параметра в метод лотереи. В этом случае видимость может быть дополнительно ограничена только методами игры и лотереи.
И последнее замечание: вы используете вызовы функций для цикла. Поскольку java не поддерживает оптимизацию tail-call (и она не будет применяться здесь в любом случае), вы собираетесь заполнить стек и, наконец, умрете от переполнения стека, если играете достаточно долго.