每次运行此程序时都会出现逻辑错误,我觉得下面的代码应该完全符合问题的要求,但输出肯定是错误的。我看不出我做错了什么。
编写一个生成随机数的Java程序(将其命名为RandomNumbers),如下所示。确保为下面的每个部分正确标记输出,并在单独的行上打印输出。与上一个程序一样,使用选项卡转义字符将标签后的输出对齐。 a)30到50(含)之间的随机整数。 b)20和-20(含)之间的随机整数。 c)-20和-60(含)之间的随机整数。 d)0.0到15.9999(含)之间的随机浮点数。
这是我到目前为止所做的:
public class RandomNumbers{
public static void main(String[] args) {
// Part A) Generate a random integer number between 30 and 50 (inclusive)
System.out.println("a) Random integer between 30 and 50 (inclusive): " +
30 + (int)(Math.random() * ((50 - 30) + 1)));
// Part B) Generate a random integer number between 20 and -20 (inclusive)
System.out.println("a) Random integer between 30 and 50 (inclusive): " +
(-20) + (int)(Math.random() * ((20 - (-20)) + 1)));
// Part C) Generate a random integer number between -20 and -60 (inclusive)
System.out.println("a) Random integer between 30 and 50 (inclusive): " +
(-60) + (int)(Math.random() * (((-20) - (-60)) + 1)));
// Part d) Generate a random floating-point number between 0.0 and 15.9999 (inclusive)
System.out.println("a) Random integer between 30 and 50 (inclusive): " +
0.0 + (double)(Math.random() * ((15.9999 - 0.0) + 1)));
}}
我的输出是:a)30到50之间的随机整数(包括):3018 a)30至50(含)之间的随机整数:-207 a)30至50(含)之间的随机整数:-6014 a)30到50之间的随机整数(包括):0.03.7171159220482286 你可以看到这是不对的。
答案 0 :(得分:1)
您的问题是您没有将计算放在括号中。
因此,Java会将表达式中的+
符号视为字符串连接。
示例:
System.out.println("Test"+1+2);
打印Test12
,但
System.out.println("Test"+(1+2));
打印Test3
。
因此,在您的第一个示例中,您将获得3018
作为输出,因为它不会添加30 + 18,而只是将两个数字添加到您的String中。
因此,正确的代码将为您提供所需的输出
System.out.println("a) Random integer between 30 and 50 (inclusive): " +
(30 + (int)(Math.random() * ((50 - 30) + 1))));
答案 1 :(得分:1)
您需要在添加表达式中添加圆括号,否则它将 concatenaded 而不是添加。 (示例:text + 30 + 1 => text301) 在最后一种情况下,您不需要添加1。
public static void main(String[] args) {
// Part A) Generate a random integer number between 30 and 50 (inclusive)
System.out.println("a) Random integer between 30 and 50 (inclusive): " +
(30 + (int)(Math.random() * ((50 - 30) + 1))) );
// Part B) Generate a random integer number between 20 and -20 (inclusive)
System.out.println("a) Random integer between -20 and 20 (inclusive): " +
((-20) + (int)(Math.random() * ((20 - (-20)) + 1))) );
// Part C) Generate a random integer number between -20 and -60 (inclusive)
System.out.println("a) Random integer between -20 and -60 (inclusive): " +
((-60) + (int)(Math.random() * (((-20) - (-60)) + 1))) );
// Part d) Generate a random floating-point number between 0.0 and 15.9999 (inclusive)
System.out.println("a) Random integer between 0.0 and 15.9999 (inclusive): " +
(0.0 + (double)(Math.random() * (16)) );
}