我是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;
}
使用基元数组,但以这种方式附加到它(因为我不确定它的大小(
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));
}