sam*_*sam 1 java random methods class
当我运行这段代码我得到2号(这是好的),但所产生的号码是相同的(这是坏的),我不想要的号码是相同的.我已经做了这个作为我将要制作的RPG的实验,所以我认为如果每个武器都有不同的类别会更好.
主要课程:
package battlesimMK2;
public class Main {
public static void main(String Arg[]) {
String WeponEquiped = "BasicAxe";
System.out.print(BasicAxe.Str);
System.out.print(BasicAxe.Str);
}
}
Run Code Online (Sandbox Code Playgroud)
基本的斧头类:
package battlesimMK2;
import java.util.Random;
public class BasicAxe {
static Random rnd = new Random();
static int Str = rnd.nextInt(4)+5;
}
Run Code Online (Sandbox Code Playgroud)
这一行:
static int Str = rnd.nextInt(4)+5;
Run Code Online (Sandbox Code Playgroud)
声明一个静态变量并初始化一次.如果您希望代码运行每个访问Str,您应该使它成为一个方法:
public static int getStrength() {
return rnd.nextInt(4)+5;
}
Run Code Online (Sandbox Code Playgroud)
然后使用以下代码调用它Main.main:
System.out.print(BasicAxe.getStrength());
System.out.print(BasicAxe.getStrength());
Run Code Online (Sandbox Code Playgroud)
可能更加面向对象的替代方法是使强度成为实例字段,以便创建的每个ax具有可能不同(但持久)的强度:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在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());
Run Code Online (Sandbox Code Playgroud)
这里,第一和第三行输出将是相同的 - 但第二行(可能)是不同的.