2017-08-05 2 views
1

私は自分でJavaのプログラミングを練習していましたが、乱数と平均値を使ってプログラミングを行っていましたが、難しい時がありました。プログラムは「Enter#を0から100の間で丸める」と尋ねます。それから私は '3'を入力し、出力はランダムな3つの数字になります。 私の質問は、3つの数字が出てからです、私はそれらの数字の平均を探したいです。例えば、私は私の出力がJavaの平均的な平均数と乱数

Your # is 89 
Your # is 50 
Your # is 12 
Your avg is ##(//whatever the avg of numbers) 

私の出力は

Enter # to be rolled between 0 to 100 
3 
Your # is 89 
your avg is 29 
Your # is 39 
your avg is 13 
Your # is 76 
your avg is 25 

のようなものであるになりたい君たちは、この問題を解決するために私を助けることができますか?私のコードは混乱しているのを知っています

import java.util.Random; 
import java.util.Scanner; 

public class ranEx { 

    public static void main(String[] args) { 

     Random ranNumber = new Random(); 
     Scanner input = new Scanner(System.in); 

     int number; 
     int ran; 

     System.out.println("Enter # to be rolled " 
       + "between 0 to 100"); 
     number = input.nextInt(); 

     for(int i=0; i<number; i++) { 
      ran=ranNumber.nextInt(100); 

      System.out.println("Your # is " + ran); 


      int avg=ran/number; 

      System.out.println("your avg is " + avg); 

     }  

    } 

} 
+1

平均を計算していないため、乱数をカウントしています。 –

+0

平均を求めたい場合は、累積合計を保持する変数を定義し、次にロール数で除算します。 –

+1

平均=合計/カウント – theisuru

答えて

0

avgをループ外に定義して、それにすべての数字を追加する必要があります。 sumと呼んで、丸めを防ぐためにdoubleと定義する方が良いでしょう。この方法では、ループの後にnumberで除算して平均を得ることができます。

double sum = 0; 
for(int i=0; i<number; i++) { 
// ... 
    sum += ran; 
} 
System.out.println("your avg is " + sum/number); 
0
int sum=0; 
for(int i=0; i<number; i++) { 
      ran=ranNumber.nextInt(100); 

      System.out.println("Your # is " + ran); 

      sum = sum+ran; 

     }  
     System.out.println("your avg is " + sum/number);  
0

それがテストされています: ユーザー数の整数を入力する必要があります。

import java.util.Random; 
import java.util.Scanner; 
public class ranEx { 
public static void main(String[] args) { 
    Random ranNumber = new Random(); 
    Scanner input = new Scanner(System.in); 
    int number; 
    int ran = 0; 
    System.out.println("Enter A NUMBER to be rolled " 
      + "between 0 to 100"); 
    number = input.nextInt(); 
    for(int i=0; i<number; i++) { 
     ran=ran+(ranNumber.nextInt(100)); 
     System.out.println("Your # is " + ran); 
     int avg=ran/number; 
     System.out.println("your avg is " + avg); 
    }  
    } 
} 

出力:

run: 
Enter A NUMBER to be rolled between 0 to 100 
5 
Your # is 95 
your avg is 19 
Your # is 107 
your avg is 21 
Your # is 178 
your avg is 35 
Your # is 274 
your avg is 54 
Your # is 338 
your avg is 67 
BUILD SUCCESSFUL (total time: 2 seconds) 
0

あなたは平均一度だけ計算をしたい、外ループ、値を生成した後。 、ループループ内

  • 前にゼロに

    1. Intializeアキュムレータ変数を後アキュムレータ
    2. にループをそれぞれ生成された値を追加し、アキュムレータ値を分割:あなたは次のようにあなたの目標を達成することができ値の数で表します。
  • 0

    平均を求めたい場合は、積算合計を保持する変数を定義し、ロール数で除算します。

    // double for large values and decimal division later on 
    double total= 0; 
    
    int rolls = 4; 
    for (int x = 0 ; x < rolls; x++) { 
    
        total += x; 
    } 
    
    // calculate average 
    double average = total/rolls; 
    
    // validate that it works, ((0 + 1 + 2 + 3)/4) == 1.5 
    Assert.assertEquals(1.5d, average);