Вы вызываете nextInt
статически, используя Random.nextInt
.
Вместо этого создайте переменную Random r = new Random ();
, а затем вызовите r.nextInt (10)
.
Определенно стоит проверить:
Вы действительно должны заменить эту строку,
Random Random = new Random();
примерно так:
Random r = new Random();
Если вы используете имена переменных в качестве имен классов, вы столкнетесь с массой проблем. Также в соответствии с соглашением Java используйте имена в нижнем регистре для переменных. Это поможет избежать путаницы.
Вы пытаетесь вызвать метод экземпляра для самого класса.
Вам следует сделать:
Random rand = new Random();
int a = 0 ;
while (!done) {
int a = rand.nextInt(10) ;
....
Вместо
Как я уже говорил здесь stackoverflow.com/questions/2694470/whats-wrong ...
В В Java статические методы принадлежат классу, а не экземпляру. Это означает, что вы не можете вызывать другие методы экземпляра из статических методов, если они не вызываются в экземпляре, который вы инициализировали в этом методе.
Вот что вы, возможно, захотите сделать:
public class Foo
{
public void fee()
{
//do stuff
}
public static void main (String[]arg)
{
Foo foo = new Foo();
foo.fee();
}
}
Обратите внимание, что вы запускаете метод экземпляра из экземпляра, который вы создали. Вы не можете просто вызвать метод экземпляра класса непосредственно из статического метода, потому что нет экземпляра, связанного с этим статическим методом.
Нарушение соглашений об именах Java (имена переменных и имена методов начинаются с нижнего регистра, имена классов начинаются с верхнего регистра) вносит свой вклад в вашу путаницу.
Переменная Random
находится только «в области действия» внутри метода main
. Он недоступен для методов, вызываемых main
. Когда вы возвращаетесь из main
, переменная исчезает (это часть фрейма стека).
Если вы хотите, чтобы все методы вашего класса использовали один и тот же экземпляр Random
, объявите переменную-член:
class MyObj {
private final Random random = new Random();
public void compTurn() {
while (true) {
int a = random.nextInt(10);
if (possibles[a] == 1)
break;
}
}
}