从java中的方法中提取一个随机数

时间:2014-03-20 18:57:14

标签: java random

我试图制作一个可以引入两个玩家的程序,然后随机选择谁先行。我试图从主程序之外的方法中调用随机数。但是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;
    }

2 个答案:

答案 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);

请改用RandomnextInt()。而且,正如其他人所说,beginner存在范围问题。