Java 读取文件和处理数据

Java 读取文件和处理数据,java,Java,我是个编程高手,似乎不知道该怎么做 我将编写一个Java程序,从一个文件中读取任意数量的行,并生成一个包含以下内容的报告: 读取的值数的计数 总数 平均分数(小数点后2位) 最大值以及相应的名称。 最小值以及相应的名称 输入文件如下所示: 55527 levaaj01 57508 levaaj02 58537 schrsd01 59552 waterj01 60552 boersm01 61552 kercvj01 6255

我是个编程高手,似乎不知道该怎么做

我将编写一个Java程序,从一个文件中读取任意数量的行,并生成一个包含以下内容的报告:

读取的值数的计数 总数 平均分数(小数点后2位) 最大值以及相应的名称。 最小值以及相应的名称

输入文件如下所示:

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