2012-02-15 30 views
3

我是新來的Java,我正在嘗試編寫一個程序來創建和總計50個隨機數[1,3]。用我現在的代碼,我可以並排輸出50個數字,但我可以想出如何添加它們。我試過int sum = sim + i;,但是隻增加了一倍的數字。我使用Eclipse並感謝任何幫助。隨機數的總和

public static void main(String[] args) { 
     int n = 50; 
     runSimulation(n); 

    } 
    public static void runSimulation (int n){ 
     for (int i = 1; i <= n; i++){ 
      int sim = (int)(Math.random()*2.9999) + 1; 
      System.out.print(sim); 
     } 
    } 
} 
+0

沒有所有'int'應是'長'? Math.random()* ** 2.9999 ** – 2012-02-15 06:14:10

+0

有沒有理由downvote這一點。這是一個合理的問題。 – 2012-02-15 06:14:21

+2

@FahimParkar你是什麼意思?我認爲他根本不需要很長的類型,因爲數字在整數範圍內。 – 2012-02-15 06:15:48

回答

0

有一個int變量保存運行總計並將其設置爲0

在循環的內部,添加到此變量。

4

試試這個:

public static void main(String[] args) { 
     int n = 50; 
     int sum = runSimulation(n); 
     System.out.print(sum); 
    } 
    public static int runSimulation (int n){ 
     int sum = 0; 
     for (int i = 1; i <= n; i++){ 
      int sim = (int)(Math.random()*2.9999) + 1; 
      sum += sim; 
      System.out.print(sim + " "); 
     } 
     return sum; 
    } 
} 
+1

太棒了!我完全忘記了退貨聲明,非常感謝! – 2012-02-15 14:37:12

0

初始化你的循環您使用的是總結的SIM卡外。

1

錯誤是int sim = (int)(Math.random()*2.9999) + 1;

你應該循環double sim = 0;之前初始化卡和使用sim = sim + (int)(Math.random()*2.9999);

不過還好sim += (int)(Math.random() * 3.);

1
int sim = 0; 
for (int i = 1; i <= n; i++) 
{ 
    sim += (int)(Math.random()*2.9999) + 1; 
} 
System.out.print(sim); 
0

您在循環的每次迭代過程中覆蓋和使用。

拉動變量的聲明和打印語句跳出循環,就像這樣:

public static void main(String[] args) { 
     int n = 50; 
     runSimulation(n); 

    } 
    public static void runSimulation (int n){ 
     int sim = 0; 
     for (int i = 1; i <= n; i++){ 
      sim += (int)(Math.random()*2.9999) + 1; 
     } 
     System.out.print(sim); 
    } 
} 
+0

你需要初始化局部變量'sim',它仍然沒有總結隨機數 – 2012-02-15 06:24:17

+0

哎呀!這裏有點累了。謝謝。我可以發誓我已經初始化它並使用'+ =',但顯然我在車輪上睡着了! – 2012-02-15 18:02:46

2

你可以做這樣的事情......

 int total = 0; 
    for (int i = 1; i <=n; i++){ 
       int sim = (int)(Math.random()*2.9999) + 1; 
       System.out.print(sim+" "); 
       total = total+sim; 
    } 
    System.out.println(total); 
0

兩個主要建議:

  • 在每個循環迭代中添加的「總和」變量中保持一個運行總數。
  • 使用java.util.Random而非的Math.random()(既然你想整數值)

因此,代碼可能再像:

public static void main(String[] args) { 
    runSimulation(50); 
} 

public static void runSimulation(int n) { 
    int sum=0; 
    java.util.Random rand=new java.util.Random(); 
    for (int i = 1; i <= n; i++){ 
     int sim = rand.nextInt(3) + 1; 
     sum = sum + sim; 
     System.out.print(sim); 
    } 
    System.out.println(); 
    System.out.println("Total = "+sum); 
} 
0
public static void main(String[] args) { 
    int count = 50; 
    runSimulation(count); 
} 

private static void runSimulation(int count) { 
    int sum = 0; 
    Random random = new Random(); 
    for (int i = 0; i < count; i++) { 
     int number = random.nextInt(3) + 1; 
     System.out.print(number); 
     sum += number; 
    } 
    System.out.println("\nSum: " + sum); 
}