如何搜索具有空格分隔符的文件并将其添加到数组或arraylist java?

时间:2014-11-06 23:44:06

标签: java arraylist java.util.scanner

我正在尝试将包含状态和大写的文件中的字符串添加到两个arraylists中。我的问题是,有些州/首都在一个要素中有两个我想要的词。 这就是我的文件的样子

California          Sacramento
New Hampshire       Concord

我希望arraylist看起来像这样

states[0]  - California

capitals[0] Sacramento

states[1] New Hampshire

capitals[1] Concord

但它打破了我不想要的两个字状态或大写字母

states[1] = New

states[2] = Hampshire

这是我的代码

public class InputOutput 
{

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

    ArrayList<String> states = new ArrayList();
    ArrayList<String> capitals = new ArrayList();
    File f = new File("US_states.txt");
    Scanner input = new Scanner(f);
    while(input.hasNextLine());
    {
        states.add(input.next());
        capitals.add(input.next());
    }
}
}

1 个答案:

答案 0 :(得分:0)

引自java.util.Scanner API

  

扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。

您的Scanner没有预定义的分隔符,因此会在空格上进行标记。

您很难设置上下文分隔符,而不事先告知您的程序NewHampshire之间的空格与California和{之间的空格不一致{1}}。

如果您可以控制文本文件,请考虑在州和大写之间设置一个特定的分隔符,然后在Sacramento中进行设置。

否则你可能会陷入困境。