【问题标题】:Java: How to read values from .txt fileJava:如何从 .t​​xt 文件中读取值
【发布时间】: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) 以获得正确的浮点平均值

标签: java file loops average


【解决方案1】:

我建议你使用缓冲阅读器。

例如

BufferedReader br = new BufferedReader(new FileReader("FilePath"))

上面的语句会给你异常,你需要处理它。

while ((Line = br.readLine()) != null) {
// your statements..
}

快乐编码

【讨论】:

  • 为什么他不能继续使用他已经创建的扫描仪,一个更容易读取数字的对象?为什么建议他改成 BufferedReader?
  • 是的,我忘了说..你没有照顾好你的钱,而且。在这种情况下,我们可以考虑逐行给出每个分数。例如 71 62 63 等等...
  • 这个方法我还没学会。我们刚刚完成了循环,从未解释过这种访问具有不同值的文件的方法。
【解决方案2】:

做这样的事情:

 for(i=0;i<30;i++){
       **float grade = in.nextFloat();**
       if(grade<lowest) lowest = grade;
       else if(grade>highest) highest = grade;

       sum+=grade;

    }

不要忘记更改您曾经用来“浮动”的每个“int”以提高精度。

【讨论】:

  • 谢谢,这帮助我弄清楚了。
【解决方案3】:

如果您的文件包含浮点值,请使用此选项

while (b = in.hasNextFloat())

    {
        s = s1.nextFloat();
        sum += s;
    }

请记住,如果您从文件中获取输入,那么最好使用 BufferdReader,因为文件保存在磁盘中,与我们的程序相比速度较慢。因此,在读取文件时最好使用一些低级流。 有关更多详细信息,您可以参考:

http://docs.oracle.com/javase/tutorial/essential/io/buffers.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    相关资源
    最近更新 更多