我试图制作一个可以引入两个玩家的程序,然后随机选择谁先行。我试图从主程序之外的方法中调用随机数。但是int初学者在打印时只会设置两个0。
主
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner kbr = new Scanner(System.in);
point_system ps = new point_system();
System.out.println("First player?");
String player1 = kbr.next();
hit_system p1 = new hit_system();
System.out.println("Second player?");
String player2 = kbr.next();
hit_system p2 = new hit_system();
ps.beginner();
System.out.println(ps.beginner);
if (ps.beginner == 1)
{
System.out.println(player1 + " goes first");
}
else if (ps.beginner == 2)
{
System.out.println(player2 + " goes first");
}
}
}
从方法中拉出
import java.io.*;
import java.util.*;
public class point_system
{
public point_system()
{
beginner = 0;
}
public int beginner()
{
int beginner = (int )(Math.random() * 3 + 1);
return beginner;
}
public int beginner;
}
答案 0 :(得分:0)
由于某种原因,您已在beginner
类中声明了一个实例变量point_system
,设置为0
。但是你声明了另一个变量,beginner
方法的本地变量,也称为执行逻辑的beginner
。
您在beginner
方法中引用了main
实例变量,并且您永远不会在point_system
中更改实例变量,只更改局部变量,这就是为什么它总是0
。
而是将调用的结果分配给变量。
。{/ 1}}方法beginner
然后,您可以从int b = ps.beginner();
System.out.println(b);
if (b == 1)
类中删除实例变量beginner
。
另外,您需要使用point_system
代替2
,以免意外返回3
中的3
。
答案 1 :(得分:0)
int beginner = (int )(Math.random() * 3 + 1);
请改用Random
和nextInt()
。而且,正如其他人所说,beginner
存在范围问题。