我有一个名为“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();
}
}
}
}
答案 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。最后一步是将它们加起来并做一些数学计算以获得平均值。
希望这会有所帮助。谢谢!