java的:阅读的文本文件,并使用扫描仪类存储信息在一个数组 [英] java: Read text file and store the info in an array using scanner class

查看:210
本文介绍了java的:阅读的文本文件,并使用扫描仪类存储信息在一个数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个文本文件,包括学生成绩,如:

 金$ $ 40 45
杰克$ $ 35 40个

我想读取文本文件中这一数据和信息存储到使用扫描器类数组列表。难道任何一个指引我正确地写入code?

code

 进口java.io. *;
进口的java.util。*;公共类ReadStudentsGrade {公共静态无效的主要(字串[] args)抛出IOException    ArrayList的stuRec =新的ArrayList();
    档案文件=新的文件(C:\\\\ StudentGrade.txt);
    尝试{
        扫描器扫描器=新扫描仪(文件).useDelimiter($);        而(scanner.hasNextLine())
        {
            串stuName = scanner.nextLine();
            INT midTirmGrade = scanner.nextInt();
            INT finalGrade = scanner.nextInt();
            的System.out.println(stuName ++ midTirmGrade ++ finalGrade);
        }
    }
    赶上(FileNotFoundException异常E)
    {
        e.printStackTrace();
    }
}

运行时错误:

 异常线程mainjava.util.InputMismatchException
    在java.util.Scanner.throwFor(Scanner.java:840)
    在java.util.Scanner.next(Scanner.java:1461)
    在java.util.Scanner.nextInt(Scanner.java:2091)
    在java.util.Scanner.nextInt(Scanner.java:2050)
    在writereadstudentsgrade.ReadStudentsGrade.main(ReadStudentsGrade.java:26)


解决方案

尝试 useDelimiter(\\\\ $ | [\\\\ \\\\řN] +);

 字符串stuName = scanner.next(); //不nextLine()!
        INT midTirmGrade = scanner.nextInt();
        INT finalGrade = scanner.nextInt();

您的问题,表示:


  • 您读错的全行的让学生姓名

  • $ 是需要转义正则表达式元字符

  • 您需要提供两个行分隔符和字段分隔符

I have a text file include Student Grades like:

Kim $ 40 $ 45
Jack $ 35 $ 40

I'm trying to read this data from the text file and store the information into an array list using Scanner Class. Could any one guide me to write the code correctly?

Code

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

public class ReadStudentsGrade {

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

    ArrayList stuRec = new ArrayList();
    File file = new File("c:\\StudentGrade.txt");
    try {
        Scanner scanner = new Scanner(file).useDelimiter("$");

        while (scanner.hasNextLine())
        {
            String stuName = scanner.nextLine();
            int midTirmGrade = scanner.nextInt();
            int finalGrade = scanner.nextInt();
            System.out.println(stuName + " " + midTirmGrade + " " + finalGrade);
        }
    }
    catch (FileNotFoundException e)
    {
        e.printStackTrace();
    }
}

Runtime error:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:840)
    at java.util.Scanner.next(Scanner.java:1461)
    at java.util.Scanner.nextInt(Scanner.java:2091)
    at java.util.Scanner.nextInt(Scanner.java:2050)
    at writereadstudentsgrade.ReadStudentsGrade.main(ReadStudentsGrade.java:26)

解决方案

Try useDelimiter(" \\$ |[\\r\\n]+");

        String stuName = scanner.next(); // not nextLine()!
        int midTirmGrade = scanner.nextInt();
        int finalGrade = scanner.nextInt();

Your problems were that:

  • You mistakenly read whole line to get student name
  • $ is a regex metacharacter that needs to be escaped
  • You need to provide both line delimiters and field delimiters

这篇关于java的:阅读的文本文件,并使用扫描仪类存储信息在一个数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆