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

如何搜索具有空格分隔符的文件并将其添加到数组或arraylist java?,java,arraylist,java.util.scanner,Java,Arraylist,Java.util.scanner,我试图将包含州和大写字母的文件中的字符串添加到两个ArrayList中。我的问题是,有些州/首都有两个单词,我想把它们放在一个元素中。 这就是我的文件的样子 California Sacramento New Hampshire Concord 我想让arraylist看起来像这样 states[0] - California capitals[0] Sacramento states[1] New Hampshire capitals[1] Concor

我试图将包含州和大写字母的文件中的字符串添加到两个ArrayList中。我的问题是,有些州/首都有两个单词,我想把它们放在一个元素中。 这就是我的文件的样子

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());
    }
}
}
公共类输入输出
{
公共静态void main(字符串[]args)引发IOException
{
ArrayList states=新的ArrayList();
ArrayList大写=新的ArrayList();
文件f=新文件(“US_states.txt”);
扫描仪输入=新扫描仪(f);
while(input.hasNextLine());
{
states.add(input.next());
大写字母.add(input.next());
}
}
}

引用
java.util.Scanner

扫描器使用定界符模式将其输入拆分为标记,默认情况下,定界符模式匹配空白

您的
扫描器
没有预定义的分隔符,因此在空白处标记

如果不事先告诉您的程序
New
Hampshire
之间的空间与
California
Sacramento
之间的空间不同,您很难设置上下文分隔符

如果您对文本文件有控制权,请考虑在状态和资本之间设置一个特定的分隔符,然后将其设置在<代码>扫描器< /代码>。


否则您可能会被卡住。

您将不得不使用不同于空格的分隔符。否则,就无法区分州/市名称中的空格和分隔符。@MichaelKrause你不能真的说“没有”来区分,我的意思是你可以在应用程序中花时间区分这两个,这是不太可行的。你可以看到州是北、南、西、新,或者罗德岛(我想这涵盖了所有的地方),如果是康考特,就用下一个词。正如Michael所说,完全通过编程(即独立于州/首府名称)无法做到这一点,因为您使用空格来指示何时更改。您应该更新您的问题。按原样,您似乎已经知道如何搜索带有空格分隔符的文件并将结果添加到数组中。@Jlas但它不包括大写字母,在那里您还有Little、Des、Baton、St、Jefferson、Carson、Santa、Oklahoma和Salt+Lake。简言之:这已经足够不切实际了。