我知道为什么我的输出没有给出任何颜色。我一直在研究这段代码,但我仍然无法弄清楚它是什么问题。它输出的全部是nullnullnull
。请帮我解决这个问题。
答案 0 :(得分:2)
因为参数是通过Java中的值传递的。将colour
传递给方法时,会生成引用的副本。该方法为此副本分配一个新值,然后在方法结束时丢弃此副本。 main()
中的原始引用因此保持不变。
致电之前:
colour --> null //main
通话期间
colour --> null // main
^
copy -------| // randomWholeNumber
在方法中分配后:
colour --> null // main
copy --> "B" // randomWholeNumber
通话结束后:
colour --> null // main
您需要从方法返回包含三种颜色的对象,并将返回的值分配给main()中的变量。
答案 1 :(得分:1)
你的代码是正确的但是这下面的行给出的随机数只是问题因为下面的这一行给出了随机数。在运行这段代码时给出不同的输出不同的时间。 我确定它不会只给出null值来检查你试图运行不同的时间并调试它你得到这个随机值。
int randnum=(int)(Math.random()*3)+1;
答案 2 :(得分:0)
您可以返回一个数组并将其指定给main中的颜色:
static String[] randomWholeNumber(){
String colors[] = new String[3];
int randnum=(int)(Math.random()*3);
if(randnum==0){
colors[0]="B";
}
else if(randnum==1){
colors[0]="G";
}
else if(randnum==2){
colors[0]="R";
int randnum2=(int)(Math.random()*3);
if(randnum2==0){
colors[1]="B";
}
else if(randnum2==1){
colors[1]="G";
}
else if(randnum2==2){
colors[1]="R";
int randnum3=(int)(Math.random()*3);
if(randnum3==0){
colors[2]="B";
}
else if(randnum3==1){
colors[2]="G";
}
else if(randnum3==2){
colors[2]="R";
}
return colors;
}
//in main
String colors[] = randomWholeNumber();
colour = colors[0];
colour2 = colors[1];
colour3 = colors[2];