2017-02-27 86 views
0

每當我運行這個程序時,我都會收到一個邏輯錯誤,我覺得下面的代碼應該完全按照問題的要求來做,但輸出肯定是錯誤的。我沒有看到我做錯了什麼。在幾個不同的參數中生成隨機數

編寫一個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))); 
}} 

我的輸出是:1)30和50(含)之間的隨機整數:3018 一)隨機整數30和50之間(含): - a)30至50(含)之間的隨機整數:-6014 a)30至50之間的隨機整數(含):0.03.7171159220482286 這是不正確的,如你所見。

+1

'我得到errors' - 這將是最好的,如果你向我們展示你嘗試過什麼以及你得到了什麼錯誤。 – Thomas

+0

您可以複製並粘貼您的代碼並替換參數。 – Compass

+1

和另一個大學的任務... – domsson

回答

1

你的問題是你沒有把你的計算放在括號內。 Java將因此將表達式中的+標誌視爲字符串連接。

實施例:

System.out.println("Test"+1+2); 

打印Test12,但

System.out.println("Test"+(1+2)); 

打印Test3

因此,在第一個示例中,您將獲得3018作爲輸出,因爲不是添加30 + 18而是將兩個數字都添加到您的字符串中。

所以正確的代碼,會給你你想要的輸出將是

System.out.println("a) Random integer between 30 and 50 (inclusive): " + 
     (30 + (int)(Math.random() * ((50 - 30) + 1)))); 
+0

你是對的,在計算開始時忘了括號。非常感激。 –

1

您需要括號添加到添加表情,或者這將是concatenaded而不是添加。 (例如:文字+ 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))); 
}