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)不能运行第二种写法?
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)不能运行第二种写法?
解决方案 »
- 很期待 多网卡 多ip 如何获取 .?? 高手赐教
- 弹出窗口时程序等待,窗口关闭后程序继续怎么做?
- JavaDocs是什么?
- 估计你们一般答不出来的弱智问题
- 请教大哥一个弱智问题,用jsp做客户端,servlet做服务器端
- SqlServer JDBC的问题!在线等待.谢谢
- java在linux执行命令出错
- 为什么我每次必须要加-classpath 才能编译执行JAVA程序,这样设置classpath 有错吗(如下)
- 急:Jbuilder 7.0 里如何加入 tomcat3.2 服务器
- jb5安装问题
- java的向上转型是怎么回事,请教一下
- 两个线程的小程序,但不知哪里出错了。大家顺便能解释一下吗??
这行。。 你先得到一个随机数,然后得到一个数组的下标
然后由下标得到数组的对应元素。这个元素是一个字符串啊,当然是得到字符串了第二个问题。。不知道
java理论上应该是正确的 软件有问题 不关java的事吧~
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())这样才行,当然直接放到你的程序里还是不能用的
必须解决第一个问题