Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在阵列旁边显示平均值_Java_Arrays_String_Return_Average - Fatal编程技术网

Java 在阵列旁边显示平均值

Java 在阵列旁边显示平均值,java,arrays,string,return,average,Java,Arrays,String,Return,Average,我是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[]

我是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;
    }
我已经编写了查找grades数组平均值的代码。我只是在返回组合数组的平均值时遇到了麻烦(在它前面还显示了“average:”

我试过做类似的事情-

String includedAverage = unitCode+" Average:"+average;
return includedAverage;
但是它开始说它不能从字符串转换到字符串[]。 如果我将方法返回类型更改为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;
}
public String[]unitMarks(int[]grades,String[]unitCode){
双和=0;
适用于(双i:等级){
总和+=i;
}
双平均=(总和/等级.长度);
字符串[]结果=新字符串[grades.length+1];
对于(int i=0;i
有两种方法。 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;
}
公共列表单位标记(int[]等级,String[]单位代码)
{
List unitCodeArrayList=新建ArrayList();
双和=0;
适用于(双i:等级)
总和+=i;
双平均=(总和/等级.长度);

对于(int i=0;i如果只需要显示值,可以使用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));
}
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;
}
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));
}