解析txt文件

cwe*_*r55 5 java parsing loops

我必须编写一个程序来解析棒球运动员信息,然后从txt文件中点击,外出,走路等.例如,txt文件可能如下所示:Sam Slugger,h,h,o,s,w,w,h,w,o,o,o,h,s Jill Jenks,o,o,s,h, h,o,o Will Jones,o,o,w,h,o,o,o,o,w,o,o

我知道如何解析文件,并可以使代码运行完美.我唯一的问题是我们应该只打印每个玩家的名字和3或他们的游戏.例如:Sam Slugger击中,击中Jill Jenks,出去,牺牲飞Will Will出去,出去,走路

我不知道如何限制这一点,每次我试图在3时切断它我总是让第一个人工作正常但是它打破了循环并且没有为所有其他玩家做任何事情.

这是我到目前为止:

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

public class ReadBaseBall{

public static void main(String args[]) throws IOException{

    int count=0;
    String playerData;
    Scanner fileScan, urlScan;

    String fileName = "C:\\Users\\Crust\\Documents\\java\\TeamStats.txt";
    fileScan = new Scanner(new File(fileName));

    while(fileScan.hasNext()){

        playerData = fileScan.nextLine();
        fileScan.useDelimiter(",");

        //System.out.println("Name: " + playerData);

        urlScan = new Scanner(playerData);
        urlScan.useDelimiter(",");


        for(urlScan.hasNext(); count<4; count++)

            System.out.print(" " + urlScan.next() + ",");

        System.out.println();

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

打印出来:Sam Slugger,h,h,o,但随后其他玩家被排除在外.我需要帮助才能让其他人打印出来.

Smi*_*_61 0

第一个问题

改成。while(fileScan.hasNext()))while(fileScan.hasNextLine())这不是一个重大问题,但使用扫描仪时,您通常将sc.*其放在sc.has*.

第二个问题

删除线fileScan.useDelimiter(",")。在这种情况下,该行不执行任何操作,而是替换默认分隔符,以便扫描仪不再根据空格进行分割。使用时这并不重要Scanner.nextLine,但稍后可能会产生一些令人讨厌的副作用。

第三个问题

将此行更改for(urlScan.hasNext(); count<4; count++)while(urlScan.hasNext()). 老实说,我很惊讶该行甚至编译了,如果它编译了,它只从扫描仪中读取前 4 个。

如果您想限制每行处理的数量,您可以将其替换为

for( int count = 0; count < limit && urlScan.hasNext( ); count++ )

这将限制读取量,limit同时仍然处理数据少于限制的行。

确保每个数据集都用一条线分隔,否则输出可能没有多大意义。