Эта строка:
static int Str = rnd.nextInt(4)+5;
объявляет статическую переменную и инициализирует ее один раз . Если вы хотите, чтобы код запускал каждый доступ к вам Str
, вы должны сделать его методом:
public static int getStrength() {
return rnd.nextInt(4)+5;
}
Затем позвоните с этим кодом в Main.main
:
System.out.print(BasicAxe.getStrength());
System.out.print(BasicAxe.getStrength());
Альтернатива, которая, вероятно, была бы более объектно-ориентированной, состояла бы в том, чтобы сделать напряженность полем экземпляр , чтобы каждый созданный топор имел возможно различную (но постоянную) силу:
public class BasicAxe {
private static final Random rnd = new Random();
private final int strength;
public BasicAxe() {
strength = rnd.nextInt(4)+5;
}
public int getStrength() {
return strength;
}
}
Затем в Main.main
:
BasicAxe axe1 = new BasicAxe();
BasicAxe axe2 = new BasicAxe();
System.out.println(axe1.getStrength());
System.out.println(axe2.getStrength());
System.out.println(axe1.getStrength());
Здесь первая и третья строки вывода будут одинаковыми, но вторая (вероятно) будет отличаться.