1.为什么程序的输出总是第一个字符串?
  
 public class LuckyStars {    public static void main (String[] args) {
     String[] stars={"Kate","Mary","Dick","Mike","Bob","Kelly"
     };
     System.out.println ("Your lucky star for today is "+stars[stars.length*(int)Math.random()]);
     //stars[stars.length*(int)Math.random()]等价于:stars[(int)stars.length*Math.random()].
    
    
}
    
}2.//stars[stars.length*(int)Math.random()]等价于:stars[(int)stars.length*Math.random()].
 我的jcreator(最新版的4.5)不能运行第二种写法?
    

解决方案 »

  1.   

    System.out.println ("Your lucky star for today is "+stars[stars.length*(int)Math.random()]); 
    这行。。 你先得到一个随机数,然后得到一个数组的下标
    然后由下标得到数组的对应元素。这个元素是一个字符串啊,当然是得到字符串了第二个问题。。不知道
    java理论上应该是正确的 软件有问题 不关java的事吧~
      

  2.   

    1.看看API对Math.random()的说明:
    public static double random()    返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
    这样看来(int)Math.random()得到的值就只能是0了
    而stars.length*(int)Math.random()的值也只能是0,所以你得到的就只能是第一个字符串2.(int)stars.length*Math.random()
    是优先级问题,你这样写只是把stars.length转换成了int型,然后在乘上Math.random()   
    java就自动把整个表达式的值转换成了double型的了,要这样使用的话就必须
    (int)(stars.length*Math.random())这样才行,当然直接放到你的程序里还是不能用的
    必须解决第一个问题