public static boolean beCompere(int[] a,int b){
for(int i=0;i<20;i++){
if(b==a[i]){
return true;
}
}
return false;
}
public static int loop(int[] a){
int b=(int)(Math.random()*26)+97;
if(beCompere(a, b)){
loop(a);//1 问题点
}
return b;//2 问题点
}
这只是一本分代码,问题是出在方法 loop()这段里,当执行到1 之后,重新回到loop()方法头,b的值也随机给了一个新值,接着就直接跳过if(beCompere(a, b)) 方法,跳到return b;请问各位为什么没有执行if(beCompere(a, b)) 这一段呢,而且return b的是上一次的随机数,并不是随机给得那个新值?
for(int i=0;i<20;i++){
if(b==a[i]){
return true;
}
}
return false;
}
public static int loop(int[] a){
int b=(int)(Math.random()*26)+97;
if(beCompere(a, b)){
loop(a);//1 问题点
}
return b;//2 问题点
}
这只是一本分代码,问题是出在方法 loop()这段里,当执行到1 之后,重新回到loop()方法头,b的值也随机给了一个新值,接着就直接跳过if(beCompere(a, b)) 方法,跳到return b;请问各位为什么没有执行if(beCompere(a, b)) 这一段呢,而且return b的是上一次的随机数,并不是随机给得那个新值?
不然想不明白怎么会跳过去。
return b 的值再看看吧,我也看不出来什么问题
int b=(int)(Math.random()*26)+97;
if(beCompere(a, b)){
loop(a);//1 问题点 ---你这里没有 return 所以loop(a)没有意义,它loop多少次对结果没有影响.b不是指针.
}
return b;//2 问题点
}