【问题标题】:Java:Reading from a file and outputting it whiling suming and avgingJava:在求和和平均时从文件中读取并输出
【发布时间】:2014-03-07 02:51:46
【问题描述】:

我需要读取一个包含 10 个数字的文件,例如: 1 2 ... 10

然后将它们读回程序中,然后将它们相加并取平均值。 唯一的问题是我一生都不知道如何将它们变成 可加数字?我还没有学过数组,所以我还是个初学者。

这是我目前所拥有的:

import java.io.*;
import java.io.File;
import java.io.IOException;
public class inputoutput {
public static void main(String args[])throws IOException{


    PrintWriter outputFile = new PrintWriter("output.txt");

    outputFile.println("1");
    outputFile.println("2");
    outputFile.println("3");
    outputFile.println("4");
    outputFile.println("5");
    outputFile.println("6");
    outputFile.println("7");
    outputFile.println("8");
    outputFile.println("9");
    outputFile.println("10");
    outputFile.close();


            BufferedReader in = new BufferedReader(new FileReader("output.txt")); 
    String text = in.readLine();
    while (in.ready()) { 
          text = in.readLine(); 
          System.out.println(text);
        }
    in.close();

老实说,我从互联网上获取了 bufferReader 代码来帮助我 但我不知道为什么它只显示从 2 到 10 而不是从 1 开始。
然后我不知道如何将它们转换为数字,以便我可以将它们加在一起 平均他们。

帮助?

【问题讨论】:

    标签: java input sum output average


    【解决方案1】:

    您应该解析 String 以获得类似的 int

    int num = Integer.parseInt(text);
    

    但也请记住,这假定 text 确实是一个可转换的字符串。

    如果你想要一个简单的验证,你可以这样做

    int num = 0;
    while ((text = in.readLine()) != null)
         try {
              num = Integer.parseInt(text);
         } catch (NumberFormatException e) {
              //do something here when you have a String that cannot be converted e.g. "19a"
              num = 0;
         }
    
         System.out.println(text);
    }
    

    编辑:我还建议您使用我在上面放置的while 条件。目前,您甚至在循环开始之前就读取了一行。

    【讨论】:

    • 会不会只返回 1 个数字给值 num?
    • 它将在第一行返回1(根据您的示例),在第二行返回2,依此类推。
    • 嗯,我想我明白了很多,但我想知道如何将每个变量设置为变量,如 num1(第一行)num 2(第二行)等等。这就是我似乎理解它的方式。
    • 你不需要这样做。您可以只声明像sum 这样的变量,并在每次读取一行时添加一个变量,像numCount 这样的变量来跟踪读取了多少行。然后你可以得到你的平均值。
    【解决方案2】:

    text 在 line1 获得 "1",但很快在 line3 更改为 "2"。 所以,"1" 永远不会被打印出来。

    如下改变line1。

    String text = "";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 2020-03-08
      • 1970-01-01
      相关资源
      最近更新 更多