为什么这个扫描器在尝试读取分隔符时出错?我如何只在单词之间分开?

doinxwow  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(252)

所以我试着把它们分开,但出于某种原因,我需要在结尾加上感叹号,这是可行的,但在现实世界中不是通常的格式。我怎样才能做到这一点,而不是在单词之间的结尾加上感叹号呢?文本文件显示:约翰!史密斯!85! 马太福音!史密斯!82! 代码如下所示:“”

package cmpsci111;
import java.util.*;
import java.io.*;
/**
 *
 * @author Matt
 */
public class Files2 {
    public static void main(String[] args) throws IOException{
        File f = new File("scores.txt");
        String firstname = "";
        String lastname = "";
        int score = 0;
        Scanner input = new Scanner(f);
        while(input.hasNextLine()){
            input.useDelimiter("!");
            firstname = input.next();
            lastname=input.next();
            score = input.nextInt();
            System.out.println(firstname+ " "+ lastname + " " + score);
        }
        input.close();

    }
}

'''

niknxzdl

niknxzdl1#

usedelimiter可以接受正则表达式作为参数。“|\r\n |\n |\r“可用于分隔!或行尾符号。文本文件可以如下所示:

John!Smith!85
Matthew!Smith!82

修改的主要方法:

public static void main(String[] args) throws IOException{
    File f = new File("scores.txt");
    String firstname = "";
    String lastname = "";
    int score = 0;

    Scanner input = new Scanner(f);
    input.useDelimiter("!|\r\n|\n|\r"); //Before while loop

    while(input.hasNextLine()){
        //input.useDelimiter("!"); // No need  
        firstname = input.next();
        lastname=input.next();
        score = input.nextInt();
        System.out.println(firstname+ " "+ lastname + " " + score);
    }
    input.close();

}

相关问题