读入数字文件并计算java中的平均值

时间:2014-04-09 20:51:22

标签: java bufferedreader filereader

我有一个名为“averages”的txt文件,如下所示:

1 4 5 3 -1
2 8 9 3 2 -1
4 8 15 16 23 42 -1
3 -1

我希望能够读取每一行,并在达到“-1”时计算每行的平均值。我已经编写了要在文件中读取的代码并将其打印到命令行,我只是无法找到每行的平均值。任何帮助将不胜感激。谢谢!

import java.io.*;
import java.util.*;

public class Test {

    public static void main(String[] args) {
        BufferedReader reader = null;

        try {
            String currentLine;

            reader = new BufferedReader(new FileReader("averages.txt"));
            while  ((currentLine = reader.readLine()) != null) {
                System.out.println(currentLine);
            }
        } catch (IOException err) {
            err.printStackTrace();
        } finally {
            try {
                if (reader != null)reader.close();
            } catch (IOException err) {
                err.printStackTrace();
            }
        }

}
}

4 个答案:

答案 0 :(得分:2)

您可以通过执行以下操作来完成此操作:

  • 使用拆分方法拆分currentLine

    String[] nums = currnetLine.split("\\s+");
    
  • 循环遍历nums并将每个元素解析为int,然后将其添加到 sum变量

    int sum = 0;
    for (int i = 0; i < nums.length; i++) {
        int num = Integer.parseInt(nums[i]);
        if(num != -1) {
            sum += num;
        }
    }
    
  • 最后计算平均值。

    sum/(nums.length - 1);// -1 because you need to execlude the -1 at the end of your line
    

答案 1 :(得分:0)

我会尝试这样的事情:

int sum = 0;

String[] values = currentLine.split(" ");

for (String value : values) {
    int n = Integer.parseInt(value);

    if (n < 0) {
        break;
    }

    sum += n;
}

int count = values.length - 1;
// calculate average from sum and count

答案 2 :(得分:0)

在Java 7+中,Scanner对象可用,并具有各种有用的功能。

1。)首先阅读该行 扫描仪扫描仪=新扫描仪(&#34; 1 51 2 52&#34;);

2。)从上面的代码中,如果你有一个空格分隔符,它很容易使用 scanner.Delimiter(&#34;&#34;);

3。)如果是scanner.hasNext()则scan.next()为下一个字符串。

使用Integer.parseInt(&#34; 1&#34;)迭代列表,得到值,sum,然后是平均值。

答案 3 :(得分:0)

请试试这个:

import java.io.*;
import java.util.*;

public class Test {

    public static void main(String[] args) {
        BufferedReader reader = null;
        try {
            String currentLine;
            reader = new BufferedReader(new FileReader("averages.txt"));
            while  ((currentLine = reader.readLine()) != null) {
                System.out.println(currentLine);
                StringTokenizer st=new StringTokenizer(currentLine," ");
                int count=st.countTokens();
                int array[]=new int[count-1];
                int i=0;
            while(st.hasMoreTokens()&&i!=count-1)
             {
                array[i]=Integer.valueOf(st.nextToken());
                i=i+1;
             }
        int sum=0;
            for(int x=0;x<array.length;x++)
                {
                    sum=sum+array[x];
                }
        float average=(float)sum/array.length;
        System.out.println("The average of this line is: "+average);
            }
        } catch (IOException err) {
            err.printStackTrace();
        } finally {
            try {
                if (reader != null)reader.close();
            } catch (IOException err) {
                err.printStackTrace();
            }
        }
}
}

我的逻辑是你一次读一行并用空格分隔。然后将这些分隔的字符串转换为Integer。最后一步是将它们加起来并做一些数学计算以获得平均值。

希望这会有所帮助。谢谢!