Java 读取文件和处理数据
我是个编程高手,似乎不知道该怎么做 我将编写一个Java程序,从一个文件中读取任意数量的行,并生成一个包含以下内容的报告: 读取的值数的计数 总数 平均分数(小数点后2位) 最大值以及相应的名称。 最小值以及相应的名称 输入文件如下所示:Java 读取文件和处理数据,java,Java,我是个编程高手,似乎不知道该怎么做 我将编写一个Java程序,从一个文件中读取任意数量的行,并生成一个包含以下内容的报告: 读取的值数的计数 总数 平均分数(小数点后2位) 最大值以及相应的名称。 最小值以及相应的名称 输入文件如下所示: 55527 levaaj01 57508 levaaj02 58537 schrsd01 59552 waterj01 60552 boersm01 61552 kercvj01 6255
55527 levaaj01
57508 levaaj02
58537 schrsd01
59552 waterj01
60552 boersm01
61552 kercvj01
62552 buttkp02
64552 duncdj01
65552 beingm01
我的程序运行良好,但当我添加
score=input.nextInt()和
player=input.next()强>
程序停止工作,键盘输入似乎停止了文件名的工作。
我试图分别读取每一行的int和name,以便处理数据并完成作业。我真的不知道下一步该怎么办
这是我的代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Scanner;
public class Program1 {
private Scanner input = new Scanner(System.in);
private static int fileRead = 0;
private String fileName = "";
private int count = 0;
private int score = 0;
private String player = "";
public static void main(String[] args) {
Program1 p1 = new Program1();
p1.getFirstDecision();
p1.readIn();
}
public void getFirstDecision() { //*************************************
System.out.println("What is the name of the input file?");
fileName = input.nextLine(); // gcgc_dat.txt
}
public void readIn(){ //*********************************************
try {
FileReader fr = new FileReader(fileName + ".txt");
fileRead = 1;
BufferedReader br = new BufferedReader(fr);
String str;
int line = 0;
while((str = br.readLine()) != null){
score = input.nextInt();
player = input.next();
System.out.println(str);
line++;
score = score + score;
count++;
}
System.out.println(count);
System.out.println(score);
br.close();
}
catch (Exception ex){
System.out.println("There is no shop named: " + fileName);
}
}
}
您使用
BufferReader
和Scanner
的方式完全是错误的
注意:您可以在扫描仪构造函数中使用BufferReader
例如:
try( Scanner input = new Scanner( new BufferedReader(new FileReader("your file path goes here")))){
}catch(IOException e){
}
注意:您的文件读取进程或其他进程必须在try
块中,因为在catch块中,您无法执行任何操作,因为您的连接已关闭。它被称为
注意:
BufferedReader将创建一个缓冲区。这将导致更快的速度
从文件中读取。为什么?因为缓冲区被
文件的内容。所以,你把一个更大的文件块放在RAM中
(如果处理的是小文件,缓冲区可以包含整个文件。)
文件)。现在,如果扫描器想要读取两个字节,它可以读取两个字节
从缓冲区中提取字节,而不必向
硬盘
一般来说,读取10倍4096字节要快得多
而不是4096乘以10字节
来源
建议:您可以使用BufferReader
读取文件的每一行,然后自己进行解析,或者您可以使用Scanner
类进行解析标记
作为提示,您可以将此示例用于解析目标
代码:
输出:
My splited name is Kick
Next year I am 21
希望您可以通过给出提示来修复您的程序。要比较您需要使用的字符串,请使用equals()而不是==。我认为您的作业正在引导您将读取的数据放入列表或字典式结构中,以执行报告-创建聚合(sum+avg)并按升序和降序排序(min+max)@DavidPostill在顶部。代码非常混乱。op使用BufferReader读取此文件,但使用scanner读取变量@我贴了我的答案,让我知道我帮了多少忙
My splited name is Kick
Next year I am 21