显示统计数据并计算某些用户输入的平均值

时间:2017-12-06 19:01:35

标签: java java.util.scanner average user-input calculator

我有这个应用程序,我需要为我的类项目创建,我到最后一部分(减去扫描仪的int验证)。

此应用程序需要能够接受来自扫描仪的任何数量的用户输入,但用户只能输入0到100之间的数字(例如,10 100' s,20 0' s等)。要停止它,用户将键入" 999"当他们输入" 999"时,应用程序将停止询问数字。

此时,我必须显示有效数字的某些统计数据(也就是0到100之间的数字)。我需要显示的统计数据是:输入的总数,最高数字,最低数字以及所有这些数字的平均值。

无法弄清楚我会怎么做。

这是代码: https://gist.github.com/tcipack/8f1ed6bd0d7d79b158ee191d228b0a24

2 个答案:

答案 0 :(得分:0)

根据您当前的代码,这些内容可以帮助您入门。

在开头创建一个新的List,然后在0-100范围内添加分数。然后,当输入“999”时,使用该列表计算结果。

注释掉的行是我添加的行:

public static void main(String[] args) {
    Scanner input =  new Scanner(System.in);
    System.out.println("Enter a score or \"999\" to end the program.");
    int score;
//  List<Integer> numbers = new ArrayList<>();
    do {
        score = input.nextInt();

        if(score != 999) {
            if(score<0 || score >100) {
                System.out.println("Only use scores that are between 0-100.");
//          } else {
//              numbers.add(score);
            }
            System.out.println("Enter another score or \"999\" to end the program.");
        } else {
//          HERE: Use the numbers list to calculate the results
            System.out.println("END THE PROGRAM. Results:");
        }
    } while (score != 999);
}

如何计算结果的示例:

int max     = numbers.stream().mapToInt(Integer::intValue).max().getAsInt();
int min     = numbers.stream().mapToInt(Integer::intValue).min().getAsInt();
int average = numbers.stream().mapToInt(Integer::intValue).average().getAsDouble();
int size    = numbers.size();

答案 1 :(得分:0)

好的,这是其中一种可能性:

package com.company;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main (String[]args) {

        Scanner in = new Scanner(System.in);
        List<Integer> listOfNumbers = new ArrayList<>();

        int number;

        System.out.print("Enter your number: ");

        while ((number = in.nextInt()) != 999){

            while (number < 0 || number > 100){
                System.out.print("Invalid input. Try again: ");
                number = in.nextInt();
            }
            System.out.print("Enter your number: ");
            listOfNumbers.add(number);
        }


        int maxNumber = listOfNumbers.stream().mapToInt(x -> x).max().getAsInt();
        int minNumber = listOfNumbers.stream().mapToInt(x -> x).min().getAsInt();
        double average = listOfNumbers.stream().mapToInt(x -> x).average().getAsDouble();
        int totalEntered = listOfNumbers.size();

        System.out.printf("Out of %d numbers entered, max is %d, min is %d and average is %.2f", totalEntered,
                                                                      maxNumber,minNumber,average);


    }
}

样品测试:

输入您的电话号码:5

输入您的电话号码:10

输入您的电话号码:-12

输入无效。再试一次:9

输入您的电话号码:999

输入的3个数字中,max为10,min为5,平均值为8.00

我使用Stream方法快速获取最小值,最大值和平均值,然后我们将其打印出来。