使用Java中的Scanner导入将扫描的单词读入数组

时间:2013-03-12 03:29:50

标签: java arrays java.util.scanner

我有这段代码:

        Scanner input = new Scanner(System.in);
        System.out.println("Enter file name: ");
        File file = new File(input.nextLine());
        if (file.length() == 0) {
            System.out.println("The input file is empty.");
            System.exit(1);
        }

它读取用户输入的文件,然后检查它是否为空,非常简单。

我想要做的是将此文件中的每个单词放入一个字符串数组中,该数组将包含每个单词,标点符号和所有单词(撇号或短划线将包含在单词中)。我该怎么做?

我们假设文件内容可能如下所示:

it's
Stop

the

malformed yes-man

只是通过返回或空格分隔的随机单词。

非常感谢您的帮助:)

2 个答案:

答案 0 :(得分:3)

检查一下(使用BufferedReader而非Scanner的例子)这会给你一个想法,然后你可以使用Scanner实现你自己:)

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

public class ReadFile
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter file name");
        String fileName = br.readLine();
        File file = new File(fileName);
        if(file.length() == 0)
        {
            System.out.println("File is empty");
        }
        else
        {
            BufferedReader fr = new BufferedReader(new FileReader(file));
            ArrayList<String> words = new ArrayList<String>();
            String[] line;
            String str;
            while((str=fr.readLine()) != null)
            {
                line = str.split(" ");
                for(String word : line)
                    words.add(word);
            }

            // Printing the content of words
            for(String word : words)
                System.out.println(word);
        }
    }
}

答案 1 :(得分:0)

String[] words = input.split("(?s)\\s+");