タイトルが示すように、最大値と最小値、偶数と奇数の量、および入力されたすべての数値の平均を見つけようとしています。
問題。コードを実行すると、オッズ カウンターとイーブン カウンターが逆の値を読み取っているように見えます。奇数は偶数入力を読み取り、偶数は奇数入力を読み取ります。私の平均については、何が問題なのかわかりません。わかっているのは、適切な分数の平均しか見つからないということだけです。
私の出力の例は最後に貼り付けられます。
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
どんな助けでも大歓迎です。ありがとうございました!