正如标题所述,我一直在寻找创建一个程序,将循环在一个文本/输入文件(的数字),然后继续寻找平均奇数和偶数出现在该文件中。
我目前已经成功地创建了如下图所示的结果,能够找到奇数的平均值。然而,我似乎不明白如何能够得到偶数的平均值。
我试着关闭扫描仪,打开另一个扫描仪,再做一段时间,如果else像下面这样循环,并且几乎尝试了相反的方法,那么其他尝试获得偶数平均值的尝试结果是输出为NaN、0或有时停留在26(26可能是我使用的输入文件,但当我手工计算时,数学/s对于获得偶数的平均值没有意义)
这个问题已经困扰我一段时间了,我想知道是否有人能给我指出一个正确的方向,告诉我如何才能达到平均水平,以及我目前拥有的水平。
Scanner scan = new Scanner(AvgOddEven.class.getResourceAsStream("Numbers.txt"));
int count = 0, sum = 0, evenCount = 0, oddCount = 0;
while (scan.hasNextInt()) {
int number = scan.nextInt();
if (number % 2 == 0) // even numbers are detected here
evenCount++; //those detected are counted here.
else
oddCount++;
sum += number;
count++; //Counts all numbers in the text file
}
System.out.println("Sum divided by odd = average: " + sum / oddCount); //This gets me the average of odd numbers
下面是我使用的文本文件。(很抱歉它很长)
1
5
17
16
10
7
11
39
1
15
13
我认为你的代码没有你认为的那样。无论您的数字是奇数还是偶数,您总是在将和
相加。因此,实际上,您当前的代码正在除以sum/oddCount
,即所有数字的总和除以奇数的数量(count)。
要解决此问题并实现偶数的平均值,您应该为evenSum
和oddSum
保留两个单独的变量。
您修改的javascript会像这样:
...
int count = 0, evenSum = 0, evenCount = 0;
double oddSum = 0.0, oddCount = 0.0; //for floating point arithmetic later
while (scan.hasNextInt()) {
int number = scan.nextInt();
if (number % 2 == 0) { // even numbers are detected here
evenSum += number;
evenCount++; //those detected are counted here.
}
else {
oddSum += number;
oddCount++;
}
count++; //Counts all numbers in the text file
}
System.out.println("Average of odds: " + oddSum / oddCount);
System.out.println("Average of evens: " + evenSum / evenCount);
最后要注意的一件事是整数除法和浮点除法之间的区别。由于您已将所有变量声明为 int
s,因此您的平均值将执行整数除法,这将截断任何小数部分。若要执行浮点除法,必须至少有一个操作数是浮点类型。我通过将 sum
变量的类型更改为浮点类型(双精度或双
精度浮点数)来处理了这个问题。
您的代码存在一些逻辑问题。您正在计算所有数字的总和,无论是偶数还是奇数,然后尝试仅获取数字子集的平均值,这将不起作用。
您需要计算偶数和奇数的不同总和:
Scanner scan = new Scanner(AvgOddEven.class.getResourceAsStream("Numbers.txt"));
int count = 0, sumEven = 0, sumOdd = 0, evenCount = 0, oddCount = 0;
while (scan.hasNextInt()) {
int number = scan.nextInt();
if (number % 2 == 0) { // even numbers are detected here
evenCount++; //those detected are counted here.
sumEven+=number;
}
else {
sumOdd+=number;
oddCount++;
}
count++; //Counts all numbers in the text file
}
System.out.println("Average of odd numbers: " + sumOdd / oddCount);
System.out.println("Average of even numbers: " + sumEven / evenCount);
我需要写一个程序来计算用户输入的整数的奇偶平均数。用户键入“完成”以完成。输出将显示奇数的平均值和偶数的平均值。 我有一个while循环程序,可以计算数字的和,我正试图增加奇数和偶数和的额外要求。这是代码: 下面是我修改的代码,对奇数和偶数进行排序,然后对每组进行平均。 预期: 实际:
我想得到用户输入的所有奇数和偶数,然后得到所有奇数的乘积和偶数的差值。例如:输入一个字符串:dfgi456456=';]=34521。输出应该显示用户输入中的所有奇数和偶数以及乘积和差值,在这种情况下,奇数是:5,3,1偶数是:4,6,2奇数的PRODUCT(乘法答案):15偶数的DIFFERENCE(减法答案):-4。请查看我下面的代码。任何帮助都将不胜感激。谢谢。 }
希望这对你来说是有意义的,我很乐意更详细地解释这个问题。
下面写的代码是正确的,但我想缩短这段代码。 用java编写一个程序,在单维数组中输入10个数字,并以所有偶数后面跟着所有奇数的方式排列它们。 我能把偶数和奇数安排在一个for循环中而不是两个for循环中吗?我使用双for循环将偶数和奇数转换为数组。请缩短代码。一个用于检查偶数的循环遍历,另一个用于检查奇数。
我正在尝试使用用户输入将数字放入一个数组,然后找到这些数字的平均值,也找到哪些数字大于平均值。这些数字进入一个数组,但当我试图求平均数时,我无法求出平均数,以及哪些数字大于平均数,因为对于试图求出大于平均数的数字的部分,并非所有变量都是可见的。但是,当我允许这个部分看到所有的变量(don't But{}围绕某些部分)时,它会找到每一个数的平均值。现在,它为每个数字打印平均值,而为大于平均值的数字打
嗨,这是我正在做的课程上的一个问题。。。 > 程序打印“键入数字”,直到用户键入数字-1。当用户键入数字1时,程序打印“谢谢,稍后再见!”!“并结束 程序应该打印用户输入的数字的总和(不带数字-1) 程序应该打印用户键入的数字(没有数字-1) 程序应该打印用户键入的数字的平均值(没有数字-1)。 5.程序应该打印用户键入的偶数和奇数的数量(没有数字-1)。 我已经完成了1-4,但完全停留在5。我确