在c和c++中,我们不能返回一个数组,只能返回指向数组的一个指针。
在Java中,能形式上"返回一个数组",实际返回的仍然是指向数组的指针。不必担心那个返回数组是否可用,只要需要,它就会自动存在,当不需要时,垃
圾回收器会在我们完成后自动清理。
Demo:
public class IceCream{
static String[] flav={"巧克力","草莓","蓝莓","香草","抹茶","香蕉"};
static String[] flavorSet(int n)
{
n=Math.abs(n)%(flav.length+1);
String[] results =new String[n];
int[] picks=new int[n];
for(int i=0;i<picks.length;i++)
{
picks[i]=-1;
}
for(int i=0;i<picks.length;i++)
{
retry;
while(true)
{
//Math.random() 从0-1随机选取一个数
int t=(int(Math.random()*flav.length);
for(int j=0;j<i;j++)
{
if(picks[j]==t)
continue retry;
}
picks[i]=t;
results[i]=flav[t];
break;
}
}
return results;
}
public static void main(String[] args)
{
for(int i=0;i<20;i++)
{
System.out.println("flavorSet("+i+")=");
String[] f1=flavorSet(flav.length);
for(int j=0;j<f1.length;j++)
System.out.println("\t"+f1[j]);
}
}
当flavorSet()随机选择香料的时候,它保证以前出现过的一次随机选择不会再次出现。使用无限While()循环,不断地做出随机选择,直到发
现未在picks数组出现过的一个元素为止。若t是一个已经在picks里出现过的数组,就用标签continue往回跳俩级,强制选择一个新t。
“`