现在我查看了许多其他问题以找到与我类似但由于某种原因我不明白如何在计算平均值时获取用户输入的数组。如果有类似我的问题,请发给我链接,我可以参考它。非常感谢。我想要它显示:
“请输入5个整数:25 43 12 5 7”
“您已输入:25 43 12 5 7,平均值为__”
public class CalcAvg {
public static void main(String[] args) {
double [] userinput = getArrayInfo();
double average = CalculateAvg(userinput);
getAvg(userinput, average);
}
public static double[] getArrayInfo() {
Scanner in = new Scanner(System.in);
final int NUM_ELEMENTS = 5;
double[] userinput =new double[NUM_ELEMENTS];
int i = 0;
System.out.println("Please enter 5 integers: ");
for (i = 0; i < NUM_ELEMENTS; ++i) {
userinput[i] = in.nextDouble();
}
return userinput;
}
public static double CalculateAvg(double[] userinput) {
double sum = 0;
double average = 0;
for (int i = 0; i < userinput.length; i++) {
sum = sum + userinput[i];
}
average = sum / userinput.length;
return average;
}
public static void getAvg(double[] userinput, double average) {
int i = 0;
System.out.println("The average of the numbers " + userinput + " is " +average);
}
}
答案 0 :(得分:1)
要以您想要的方式生成显示数组的String
,可能会创建一个方法来为您执行所有String操作(而不是重复您的代码)。通过使用for循环迭代数组,使用String
创建StringBuilder
。
public String arrayToString(double[] input) {
StringBuilder builder = new StringBuilder(); // declare this outside of the loop
for (double dub : input) {
builder.append(dub + " ");
}
return builder.toString().trim(); // get rid of trailing spaces
}
然后,要实现此功能,请将行System.out.println("The average of the numbers " + userinput + " is " +average)
更改为System.out.println("The average of the numbers " + arrayToString(userinput) + " is " + average)
。
此外,遵循命名约定的CalculateAvg()
将为calculateAvg()
。您还可以使用带有int x : userinput
的'enhanced for loop'而不是您当前使用的计数变量来遍历for循环。
答案 1 :(得分:0)
所有类都继承自Object,因此具有toString()方法。当您尝试打印数组时,它会调用toString()方法,该方法返回对象的类名表示,然后是“@”,后跟其哈希码。
解决方案是:
System.out.println(java.util.Arrays.toString(arr));
或者遍历元素以逐一打印它们。