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);
// ...
}
}