Java 我能';我不能从另一个类访问我的变量

Java 我能';我不能从另一个类访问我的变量,java,Java,我正在做一个简单的宾果游戏,有随机数字。我的主要类(宾果)在这里:(注意,我有更多与问题无关的代码)` 我用来生成随机数的类: public class RandNum { int min = 1; int max; public void randNum() { Random rn = new Random(); int row1 = rn.nextInt(max - min + 1) + min; int row2

我正在做一个简单的宾果游戏,有随机数字。我的主要类(宾果)在这里:(注意,我有更多与问题无关的代码)`

我用来生成随机数的类:

public class RandNum {
    int min = 1;
    int max;

    public void randNum() {
        Random rn = new Random();

        int row1 = rn.nextInt(max - min + 1) + min;
        int row2 = rn.nextInt(max - min + 1) + min;
        int row3 = rn.nextInt(max - min + 1) + min;
        int row4 = rn.nextInt(max - min + 1) + min;
        int row5 = rn.nextInt(max - min + 1) + min;
    }
}

现在的问题是,我正在尝试将我的b1、b2等变量设置为RandNum类中的变量row1等。我知道我可以把它全部放在一节课上,但这是一个我已经遇到过多次的问题,所以我想解决它。非常感谢您的帮助。

您的
b
等。变量的作用域是
Bingo
main
方法,因此您永远无法从另一个类或同一类的另一个方法访问它们


您可以将它们设置为
Bingo
public static
字段,而不是在方法体中声明它们(或者使用getter声明
private
s),但是由于这里有大量变量,我建议首先重构并研究一些数据结构,例如
Collection
s和
Map
s

发生的情况是,在
randNum()
方法中将
rowX
变量声明为局部变量

这使得它的作用域仅限于该方法,因此它们在该方法之外不存在/不可用

你能做什么? 将它们声明为类属性:

public class RandNum {
    int row1, row2, row3, row4, row5;
    ...
    public void randNum() {...}
}
注意:您可以改用数组:

int[] rows = new int[5];
然后在您的方法中:

public void randNum() {
    Random rn = new Random();

    for (int i = 0; i < rows.length(); i++)
        rows[i] = rn.nextInt(max - min + 1) + min;
}
public void randNum(){
Random rn=新的Random();
对于(int i=0;i
这应该可以解决这个问题。变量
b1
b2
,。。。是您的
randNum
函数的本地函数,一旦执行退出该函数,将超出范围。解决方案是将变量存储在
RandNum
类的字段中

public class RandNum{
    private int[] rows = new int[5];
    private int min;
    private int max;

    public RandNum(int min, int max) {
        Random rn = new Random();
        for(int i=0;i<5;++i)
           rows[i] = rn.nextInt(max - min + 1) + min;
    }

    public int getRow(int row) {
       return rows[i];
    }
}

public static void main (String[] args) {
    RandNum columnB = new RandNum(1,15);
    int b1 = columnB.getRow(0);
    int b2 = columnB.getRow(1);
    int b3 = columnB.getRow(2);
    int b4 = columnB.getRow(3);
    int b5 = columnB.getRow(4);

    ...
}
公共类RandNum{
私有int[]行=新int[5];
私用int min;
私人int max;
公共随机数(最小整数,最大整数){
Random rn=新的Random();
有关(int i=0;i的信息,请参见:

创建访问器/变异器:

public class RandNum {
    private int min;
    private int max;

    public RandNum(int min, int max) {
        setMin(min);
        setMax(max);
    }

    public RandNum() {
        this(1, 0);
    }

    public int getMin() {
        return min;
    }

    public int getMax() {
        return max;
    }

    public void setMin(int min) {
        this.min = min;
    }

    public void setMax(int max) {
        this.max = max;
    }

    // ...
}
然后使用它们:

public class Bingo {
    public static void main (String[] args) {
        RandNum columnB = new RandNum();
        columnB.setMax(15);
        // ...
    }
}

请使用循环。。。
public class Bingo {
    public static void main (String[] args) {
        RandNum columnB = new RandNum();
        columnB.setMax(15);
        // ...
    }
}