【发布时间】:2014-03-17 15:32:54
【问题描述】:
我正在编写一个程序,它使用文件中的 30 个成绩并计算最低、最高和平均成绩。我无法弄清楚如何编写循环语句来读取每个等级并更新最低/最高等级并将该值添加到总和中,然后再读取下一个等级。
import java.io.*;
import java.util.*;
public class MidtermStat {
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(new FileReader("grades.txt"));
int lowest = 50;
int highest = 50;
int sum = 0;
int i;
for (i = 0, i < 30, i++){
if (grade < lowest)
lowest = grade;
if (grade > highest)
highest = grade;
}
double average = sum / 30;
System.out.println("The average score is: " + average);
System.out.println("The highest score is: " + highest);
System.out.println("The lowest score is: " + lowest);
in.close();
}
}
感谢解决:
import java.io.*;
import java.util.*;
public class MidtermStat {
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(new FileReader("grades.txt"));
int lowest = 50;
int highest = 50;
int sum = 0;
int i;
for (i = 0; i < 30; i++){
int grade = in.nextInt();
if (grade < lowest)
lowest = grade;
if (grade > highest)
highest = grade;
sum += grade;
}
double average = (sum / 30.0);
System.out.println("The average score is: " + (int)(average * 100) / 100.0);
System.out.println("The highest score is: " + highest);
System.out.println("The lowest score is: " + lowest);
in.close();
}
}
【问题讨论】:
-
这个
sum / 30是整数除法。 -
将其转换为双倍平均值 = (double)sum / 30;
-
您需要从文件中读取一些内容并从循环中更新值...
-
in...不要忘记使用in...
-
应该是
(sum / 30.0)以获得正确的浮点平均值