有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中从方法中提取随机数

我正在尝试制作一个程序,将引进两名球员,然后随机选择谁将先走。我试图从主程序之外的方法调用随机数。但是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) 个答案

  1. # 1 楼答案

    出于某种原因,您在point_system类中声明了一个实例变量beginner,设置为0。但是,然后声明另一个变量,它是beginner方法的局部变量,也称为beginner,它执行实际的逻辑

    main方法中引用beginner实例变量,在point_system中从不更改实例变量,只更改局部变量,所以它总是0

    相反,将调用beginner方法的结果分配给一个变量

    int b = ps.beginner();
    System.out.println(b);
    if (b == 1)
    

    然后可以从point_system类中删除实例变量beginner

    此外,您还需要使用2而不是3,这样就不会意外地在beginner中返回3

  2. # 2 楼答案

    int beginner = (int )(Math.random() * 3 + 1);

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