【发布时间】:2013-03-22 06:27:59
【问题描述】:
正如标题所述,我试图找出最大值和最小值、偶数和奇数的数量,以及所有输入数字的平均值。
问题。当我运行我的代码时,我的奇偶计数器似乎读取它们的相反值,奇数会读取偶数输入,偶数会读取奇数输入。至于我的平均值,我不知道它有什么问题,我只知道它只能找到一个真分数的平均值。
我的输出示例将粘贴在最后。
import java.util.Scanner;
public class Homework7APrinter
{
public static void main (String[] args)
{
System.out.println("Enter a sequence of integers. Any non-integer to quit");
Scanner scan = new Scanner (System.in);
int min = Integer.MAX_VALUE;
int max = 0;
int count = 0;
int sum = 0;
int oddsCounter = 0;
int evensCounter = 0;
int getInt = Integer.MIN_VALUE;
double average = 0;
boolean notnull = true;
while(scan.hasNextInt())
{
if(true)
{
if (getInt%2==1)
{
evensCounter++;
System.out.println("even: " + evensCounter);
}
else
{
oddsCounter++;
System.out.println("odd: " + oddsCounter);
}
getInt = scan.nextInt();
if(getInt < min)
{
min = getInt;
}
else if(getInt > max)
{
max = getInt;
}
}
else
{
notnull = false;
}
sum += getInt;
System.out.println("sum " +sum);
count++;
System.out.println("count " +count);
average = sum/(count);
System.out.println("average " +average);
}
System.out.println("smallest: " + min);
System.out.println("largest: " + max);
System.out.println("even: " + oddsCounter);
System.out.println("odd: " + evensCounter);
System.out.println("average: " + average);
}
}
结果:
Enter a sequence of integers. Any non-integer to quit
1 //first input
odd: 1
sum 1
count 1
average 1.0
2 //second input
even: 1
sum 3
count 2
average 1.0
3 //third input
odd: 2
sum 6
count 3
average 2.0
4 //fourth input
even: 2
sum 10
count 4
average 2.0
q //quit the scan
smallest: 1
largest: 4
even: 2
odd: 2
average: 2.0 //average of 1, 2, 3, 4 = sum/n = 10/4 = 2.5 not 2.0
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
您需要在除法之前将总和转换为
double或float,以获得浮点结果。 -
我猜应该是 if (getInt%2==0)
-
这是死代码,它永远不会转到 else { notnull = false; } 因为你的 if 条件是 if(true),所以它永远是 true
-
"even: " + oddsCounter- 这似乎不对。