[英]Why am I getting java.lang.StackOverflowError in my code?
[英]Why am I not getting the right average in my java code?
因此,我正在處理一個賦值,並且幾乎是在使用方法並返回它。 到目前為止,我的代碼應該將數字打印在數組中,然后將這些數字取平均值。 我必須使用給定的確切格式使用給定的方法,但是我不確定為什么平均值出了錯。 它正在打印521674.2作為平均值,這顯然是錯誤的。 這是我的代碼:
public class Statistics
{
public static void main(String[] args)
{
int[] nums = new int[]{5, 2, 1, 6, 7};
printArray(nums);
average(nums);
double store = average(nums);
System.out.println(store);
}
public static void printArray(int[] nums) {
for(int i = 0; i < nums.length; i++){
System.out.print(nums[i]);
}
}
public static double average(int[] values) {
int sum = 0;
double average;
for(int i=0; i < values.length; i++){
sum = sum + values[i];
}
average = (double)sum/values.length;
return average;
實際上,它先打印了數組( 52167
),然后打印了平均值( 4.2
)。
為了改善這一點,您可能需要一個System.out.println();
在printArray
,因此輸出在自己的行上。
您可能還需要有一個分隔符,像,
,所以它打印5,2,1,6,7
。 例如:
public static void printArray(int[] nums) {
for (int i = 0; i < nums.length - 1; i++) {
System.out.print(nums[i]);
System.out.print(",");
}
if (nums.length > 0) { // make sure array isn't empty
System.out.println(nums[nums.length - 1]);
}
}
您的代碼沒有錯。 由於輸出,您感到困惑。
如果您注釋處理printArray()
,或將其System.out.print()
更改為System.out.println()
,那么您將看到預期的結果。
當前,您的代碼正在同一行上打印數組的內容和平均值,中間沒有空格。 刪除printArray()調用,您將看到它僅輸出平均值4.2
,這是正確的:
public static void main(String[] args) {
int[] nums = new int[] { 5, 2, 1, 6, 7 };
//printArray(nums);
average(nums);
double store = average(nums);
System.out.println(store);
}
您應該使用.println()而不是print(),這會很好
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.