在循环外部存储while循环的输入

时间:2014-10-21 20:06:12

标签: java while-loop

所以我有一个问题,希望用户输入未知数量的数字,然后计算这些数字的总数和平均值。它希望我们使用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 ;
    }

但是,每次执行循环时,标记都会被覆盖。如何存储每个循环输入以供进一步使用?

5 个答案:

答案 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);