[英]Printing the summary of a series of questions using non-void method
HY。 我寫了這段代碼
import java.util.Scanner;
public class SportsEvents {
public static void main(String[] args) {
String[] contestants = getcontestants();
int[] score=getscores();
System.out.println("The maximum score is: "+getMaxValue(score));
System.out.println("The minimum score is: "+getMinValue(score));
System.out.println("The average is: "+getAverage(score));
}
public static String[] getcontestants()
{
int numcontestants=1;
String name[] = new String[numcontestants];
for(int j=0;j<numcontestants;j++){
Scanner ip=new Scanner(System.in);
System.out.println("Enter contestant's name");
name[j]=ip.nextLine();
}
return name;
}
public static int[] getscores()
{
int numscores=8;
int score[] = new int[numscores];
for (int a=0;a<numscores;a++){
Scanner ip=new Scanner(System.in);
System.out.println("Enter the scores");
score[a]=ip.nextInt();
}
return score;
}
public static int getMaxValue(int[] array) {
int maxValue = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > maxValue) {
maxValue = array[i];
}
}
return maxValue;
}
public static int getMinValue(int[] array) {
int minValue = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] < minValue) {
minValue = array[i];
}
}
return minValue;
}
public static int getAverage(int[] people) {
int sum = 0;
for (int i=0; i < people.length; i++) {
sum = sum + people[i];
}
int result = sum / people.length;
return result;
}
}
如您所見,用戶輸入一個名稱和8個分數,計算機將找到最大分數,最低分數和平均值。 我想要一個非無效的方法,將提供所有內容的摘要,但是我不知道該怎么做。 例:如果我輸入James的名字和1-8的數字,則要打印:選手是James,他的最高分數是8。他的最低分數是1。他的平均分數是49。謝謝,告訴我令人困惑!!
您想要將即時結果存儲到包含min, max, avg
的單個對象中。
在Java 8中,已經為您提供了一種開箱即用的方法:
int[] score=getscores();
IntSummaryStatistics stats = Arrays.stream(score).summaryStatistics();
IntSummaryStatistics
包含
private long count;
private long sum;
private int min;
private int max;
您還可以手動獲得該結果:
首先定義一個類將保存您的數據:
public class SportsEvents {
public static class IntArrayStatistic {
private int min = Integer.MAX_VALUE;
private int max = Integer.MIN_VALUE;
private int sum = 0;
private int avg;
private int count;
// Getter - Setter
public static IntArrayStatistic of(int[] input) {
if (input == null) {
throw new IllegalArgumentException("Null array");
}
IntArrayStatistic result = new IntArrayStatistic();
result.count = input.length;
for (int i : input) {
if (i < result.min) {
result.min = i;
}
if (i > result.max) {
result.max = i;
}
result.sum += i;
}
result.avg = result.sum / result.count;
return result;
}
}
}
並使用此:
int[] score=getscores();
IntArrayStatistic stats = IntArrayStatistic.of(score);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.