在几个不同的参数中生成随机数

时间:2017-02-27 15:45:01

标签: java

每次运行此程序时都会出现逻辑错误,我觉得下面的代码应该完全符合问题的要求,但输出肯定是错误的。我看不出我做错了什么。

编写一个生成随机数的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 你可以看到这是不对的。

2 个答案:

答案 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)) );
}