现在我浏览了许多其他问题以找到与我的相似问题,但由于某种原因,我不明白如何在计算平均值时获取用户输入的数组以显示。如果有与我类似的问题,请向我发送链接,以便我可以参考它。非常感谢。我希望它显示:
"请输入 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);
}
}
要生成以您想要的方式显示数组的String
,可以创建一个方法来为您执行所有 String 操作(而不是重复您的代码)。通过使用 for 循环遍历数组,使用 StringBuilder
创建String
。
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
的"增强型 for 循环"来循环 for 循环,而不是您当前使用的计数变量。
所有类都继承自 Object,因此具有 toString() 方法。当您尝试打印数组时,它会调用 toString() 方法,该方法返回对象的类名表示形式,然后返回"@",后跟其哈希代码。
解决方案是:
System.out.println(java.util.Arrays.toString(arr));
或者循环遍历元素以逐个打印它们。