作为这个问题的一部分,我需要找到:
我需要找到的最后两件事是最大值和最小值。
我的老师已经写了基本代码:
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循环中执行此操作:
if (count > largest)
largest = count;
if (count < smallest)
smallest = count;
这个想法是,当while循环迭代时,它会将它传递的数字与最大值进行比较,并且它将在计数中找到的最大值与最大值匹配,如果找到的数字大于最大值,则变为新的最大的。同样的想法最小。
虽然不行。我该怎么办?
我不确定你们是否需要这个,但这是我在while循环中为count计算的代码:
count += 1;
我该怎么办?
编辑/添加: 我想你们应该看到我在while循环中实际完成的所有其他事情:
while (infile.hasNext())
{
count += 1;
sum += infile.nextInt();
average = sum/count;
if (sum%2 != 0)
odds++;
else
evens++;
}
答案 0 :(得分:2)
此代码未经过测试,但应该按照您的要求进行测试。
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 :(得分:1)
我相信你需要做点什么,
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);
我使用包含
的文件进行了测试50 3 21 57 10 20
我收到了
的预期(格式化)输出smallest = 3, largest = 57, average = 26.833333, sum = 161, count = 6, evens = 3,
odds = 3