2017-08-05 124 views
1

我只是在使用随机数和平均数来自己练习java编程,但是我很难做到这一点。该程序将要求“输入#在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

Average =总数/次数 – 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. 在循环中前为零,每个生成的值添加到累加器
  3. 后循环,分累加器值由值的数量
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);