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 |
。