所以我有一个问题,希望用户输入未知数量的数字,然后计算这些数字的总数和平均值。它希望我们使用while循环来根据用户说他们必须输入的数量来询问数字的输入。如何存储输入然后用于计算总计和平均值?
这就是我所拥有的:
int numOfMarks, mark ;
Scanner kdb = new Scanner(System.in);
System.out.print("Enter number of marks: ");
numOfMarks = kbd.nextInt() ;
int i = 1 ;
while(i<=numOfMarks) {
System.out.print("Enter a mark: ") ;
mark = kbd.nextInt() ;
i=i+1 ;
}
但是,每次执行循环时,标记都会被覆盖。如何存储每个循环输入以供进一步使用?
答案 0 :(得分:0)
无需将它们全部存储起来,最终得到总计和平均值......
double total=0.0;
while(i<=numOfMarks) {
System.out.print("Enter a mark: ") ;
mark = kbd.nextInt() ;
i=i+1 ;
//new code
total+= mark;
}
System.out.println("Total= " + total);
System.out.println("Avergae= " + total/numOfMarks);
答案 1 :(得分:0)
您可以创建一个运行总计,并使用average = total / numOfMarks
int total = 0;
while(i<=numOfMarks) {
System.out.print("Enter a mark: ") ;
mark = kbd.nextInt() ;
total += mark;
i=i+1 ;
}
int avg = total / numOfMarks;
仅供参考,如果您需要进行更复杂的分析(例如查找中位数),您可以使用数据结构(例如ArrayList<int>
)来存储数据
http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
ArrayList<int> marks = new ArrayList<int>();
while(i<=numOfMarks) {
System.out.print("Enter a mark: ") ;
mark = kbd.nextInt() ;
marks.add(mark);
i=i+1 ;
}
答案 2 :(得分:0)
您可以将其保存在ArrayList中。
int numOfMarks, mark ;
Scanner kdb = new Scanner(System.in);
List<Integer> myValues = new ArrayList<Integer>();
System.out.print("Enter number of marks: ");
numOfMarks = kbd.nextInt() ;
int i = 1 ;
while(i<=numOfMarks) {
System.out.print("Enter a mark: ") ;
myValues.add(kbd.nextInt());
i=i+1 ;
}
//now you have a list of all the values and you can do what you want.
答案 3 :(得分:0)
对于总计和平均值,您需要保留两个变量 - 一个用于总计,一个用于数字。但是你已经有了 - numOfMarks
。
所以定义:
double total = 0;
在循环内,将每个标记添加到总数中。
total += mark;
然后在结束时,你可以打印:
System.out.println( "Total: " + total );
System.out.println( "Average: " + ( total / numOfMarks ) );
我使用双倍的原因是平均值可能不是整数。如果你想要平均值是圆的,你可以使用long(或者对于大多数情况甚至是int)。
答案 4 :(得分:0)
您可以将它们存储在一个数组中,但考虑到所需的全部和平均值,您可以继续添加每个循环的总数。最后,您将获得总数,并且可以从中计算平均值。像这样:
int numOfMarks, totalMarks;
Scanner kdb = new Scanner(System.in);
System.out.print("Enter number of marks: ");
numOfMarks = kbd.nextInt();
int i = 1;
while(i<=numOfMarks) {
System.out.print("Enter a mark: ");
totalMarks = totalMarks + kbd.nextInt(); // add it to the total
i=i+1;
}
// when the loop is done, compute the average. The total is already computed.
double average = totalMarks / numOfMarks;
// print it out maybe
System.out.println("Total: " + totalMarks);
System.out.println("Average: " + average);