有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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


共 (3) 个答案

  1. # 1 楼答案

    对于总数和平均数,需要保留两个变量——一个用于总数,一个用于数字的数量。但是你已经有了-numOfMarks

    因此,请定义:

    double total = 0;
    

    在循环中,将每个标记添加到总数中

    total += mark;
    

    最后,您可以打印:

    System.out.println( "Total: " + total );
    System.out.println( "Average: " + ( total / numOfMarks ) );
    

    我使用double的原因是平均值可能不是一个整数。如果希望平均值为四舍五入,可以使用long(大多数情况下甚至int)

  2. # 2 楼答案

    你可以将它们存储在一个数组中,但考虑到你所需要的只是总数和平均数,你可以继续增加每个循环的总数。最后,你会得到总数,然后就可以计算出平均数。像这样:

    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);
    
  3. # 3 楼答案

    不需要全部存储,最后有一个运行总数和平均值

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