在数组旁边显示平均值



我是Java新手,很抱歉。

我有两个阵列:

int[] grades = {64,55,45,67,65,88};
String[] unitCode = {"APP:","BSAD:","CF","DAD:","N&CS:","POP:"};

我需要把每一个放在一起形成:

[APP:64, BSAD:55, CF45, DAD:67, N&CS:65, POP:88]

我用这个代码做到了这一点:

public String[] unitMarks(int[] grades, String[] unitCode) 
{
double sum = 0;
for (double i : grades)
sum += i;
double average = (sum/grades.length);
for (int i = 0; i <grades.length; i++)
{
String combination = unitCode[i]+grades[i];
unitCode[i] = combination;
}
return unitCode;
}

但我也需要在它的末尾显示平均分数,所以它应该说:

[APP:64, BSAD:55, CF:45, DAD:67, N&CS:65, POP:88, Average:64.0]

我已经编写了用于查找成绩数组平均值的代码。我只是在返回组合数组的平均值时遇到了问题(并且在它之前还显示"average:"(。

我试过做一些事情,比如-

String includedAverage = unitCode+" Average:"+average;
return includedAverage;

但随后它开始表示无法从String转换为String[]。如果我将方法返回类型更改为String,它将不起作用:

System.out.println(Arrays.toString(myArrays.unitMarks(grades, unitCode)));

任何帮助或建议都会很棒。谢谢

您可以添加一个比unitcode数组多出一个空间的结果数组,并将值分配给它,而不是修改输入:

public String[] unitMarks(int[] grades, String[] unitCode) {
double sum = 0;
for (double i : grades) {
sum += i;
}
double average = (sum / grades.length);
String[] result = new String[grades.length +1];
for (int i = 0; i < grades.length; i++) {
String combination = unitCode[i] + grades[i];
result[i] = combination;
}
result[result.length-1]= "Average:"+average;
return result;
}

有两种方法。1.使用ArrayList,当你向它添加元素时,它的大小会增加

public List<String> unitMarks(int[] grades, String[] unitCode) 
{
List<String> unitCodeArrayList = new ArrayList<String>();
double sum = 0;
for (double i : grades)
sum += i;
double average = (sum/grades.length);
for (int i = 0; i <grades.length; i++)
{
String combination = unitCode[i]+grades[i];
unitCodeArrayList.add(combination);
}
unitCodeArrayList.add("Average:"+average);
return unitCodeArrayList;
}
  1. 使用基元数组,但以这种方式附加到它(因为我不确定它的大小(

    public String[] unitMarks(int[] grades, String[] unitCode) 
    {
    double sum = 0;
    for (double i : grades)
    sum += i;
    double average = (sum/grades.length);
    for (int i = 0; i <grades.length; i++)
    {
    String combination = unitCode[i]+grades[i];
    unitCode[i] = combination;
    }
    String[] resUnitCode = appendArray(unitCode, "Average:"+average);
    return resUnitCode;
    }
    private String[] appendArray(String[] array, String x){
    String[] result = new String[array.length + 1];
    for(int i = 0; i < array.length; i++)
    result[i] = array[i];
    result[result.length - 1] = x;
    return result;
    }
    

如果只需要显示值,可以使用Stream计算平均值并一次性显示:

private void displayGradesAndAverage(int[] grades, String[] unitCode) {
IntStream.range(0, grades.length)
.peek(i -> System.out.print(unitCode[i] + grades[i] + ", "))
.map(i -> grades[i])
.average()
.ifPresent(avg -> System.out.println("Average:" + avg));
}

最新更新