我有这个应用程序,我需要为我的类项目创建,我到最后一部分(减去扫描仪的int验证)。
此应用程序需要能够接受来自扫描仪的任何数量的用户输入,但用户只能输入0到100之间的数字(例如,10 100' s,20 0' s等)。要停止它,用户将键入" 999"当他们输入" 999"时,应用程序将停止询问数字。
此时,我必须显示有效数字的某些统计数据(也就是0到100之间的数字)。我需要显示的统计数据是:输入的总数,最高数字,最低数字以及所有这些数字的平均值。
无法弄清楚我会怎么做。
这是代码: https://gist.github.com/tcipack/8f1ed6bd0d7d79b158ee191d228b0a24
答案 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方法快速获取最小值,最大值和平均值,然后我们将其打印出来。