在java中读取数字文件并计算平均值
我有一个名为“averages”的TXT文件,它看起来像:在java中读取数字文件并计算平均值,java,bufferedreader,filereader,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(St
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();
}
}
}
}
我想试试这样的东西:
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
int和=0;
字符串[]值=currentLine.split(“”);
for(字符串值:值){
int n=Integer.parseInt(值);
if(n<0){
打破
}
总和+=n;
}
int count=value.length-1;
//根据总和和计数计算平均值
您可以通过执行以下操作来完成:
- 使用拆分方法拆分
: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; } }
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();
}
}
}
}
import java.io.*;
导入java.util.*;
公开课考试{
公共静态void main(字符串[]args){
BufferedReader reader=null;
试一试{
串电流线;
reader=newbufferedreader(newfilereader(“averages.txt”);
while((currentLine=reader.readLine())!=null){
系统输出打印项次(当前行);
StringTokenizer st=新的StringTokenizer(currentLine,“”);
int count=st.countTokens();
int数组[]=新的int[count-1];
int i=0;
而(st.hasMoreTokens()&&i!=count-1)
{
数组[i]=Integer.valueOf(st.nextToken());
i=i+1;
}
整数和=0;
对于(intx=0;xSo,在这种情况下,平均值是sum/nums.length?啊,这是有道理的。我没有得到-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);
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();
}
}
}
}