使用Java查找文件中的最大和最小数字

Finding largest and smallest numbers within a file using Java

作为这个问题的一部分,我需要找到:

  • 数字的数量(计数)
  • 数字之和(和)
  • 数字的平均值(平均值)
  • 哪个数字是偶数
  • 哪些数字是奇数(赔率)

最后两件事我需要找到的是最大值和最小值。

我的老师已经写了基本代码:

1
2
3
4
5
Scanner infile = new Scanner ( new FileReader(args[0]) );
int count=0,sum=0, largest=Integer.MIN_VALUE,smallest=Integer.MAX_VALUE, evens=0, odds=0;
double average=0.0;

while (infile.hasNext())

我已经为while循环中列出的变量编写了代码,但是我不知道如何处理最大值和最小值。

我在while循环中尝试过这样做:

1
2
3
4
5
if (count > largest)
   largest = count;

if (count < smallest)
   smallest = count;

其思想是,当while循环迭代时,它会将它传递的数字与最大值进行比较,并将其在count中找到的最大值与最大值进行匹配,如果它找到的数字大于最大值,则会成为新的最大值。最小的也有同样的想法。

但它不起作用。我该怎么办?

我不确定你们是否需要这个,但这是我为while循环中的计数编写的代码:

1
count += 1;

我该怎么办?

编辑/加载项:我想你们应该看看我在while循环中所做的一切:

1
2
3
4
5
6
7
8
9
10
while (infile.hasNext())
    {
        count += 1;
        sum += infile.nextInt();
        average = sum/count;
        if (sum%2 != 0)
            odds++;
        else
            evens++;
    }


这段代码没有经过测试,但是应该按照您的要求来做。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 int count = 0, min = Integer.MAX_VALUE, max = Integer.MIN_VALUE,
       sum = 0, even = 0, odd = 0;
 while (scanner.hasNextInt()) {
    int number = scanner.nextInt();
    if (number < min)
        min = number;
    if (number > max)
        max = number;
    if (number % 2 == 0)
        even++;
    else
        odd++;
    sum+= number;
    count++;
 }
 double average = sum * 1.0 / count;


我相信你需要做点什么,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int count = 0, sum = 0, largest = Integer.MIN_VALUE, smallest = Integer.MAX_VALUE,
    evens = 0, odds = 0;
double average = 0.0;

while (infile.hasNext()) {
  if (infile.hasNextInt()) {
    int value = infile.nextInt();
    count++;
    sum += value;
    if (value > largest) {
      largest = value;
    }
    if (value < smallest) {
      smallest = value;
    }
    if (value % 2 == 0) {
      evens++;
    } else {
      odds++;
    }
  } else {
    infile.next();
  }
}
average = ((double) sum) / count;
System.out.printf("smallest = %d, largest = %d, average = %f,"
        +"sum = %d, count = %d, evens = %d, odds = %d%n",
        smallest, largest, average, sum, count,
        evens, odds);

我用一个包含

1
50 3 21 57 10 20

我收到了

1
2
smallest = 3, largest = 57, average = 26.833333, sum = 161, count = 6, evens = 3,
odds = 3