簡體   English   中英

使用非無效方法打印一系列問題的摘要

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM