Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从文件中接受多个字符串变量_Java - Fatal编程技术网

Java 如何从文件中接受多个字符串变量

Java 如何从文件中接受多个字符串变量,java,Java,我试图从文件中读取数据并将其写入数组。我相信多个字符串变量是让我讨厌的东西 我尝试过使用scan.NextLine,但仍然不起作用 public static void main (String[] args) throws IOException { File f = new File("inData.txt"); House[] list = new House[7]; Scanner scan = new Scanner(f); int count = 0

我试图从文件中读取数据并将其写入数组。我相信多个字符串变量是让我讨厌的东西

我尝试过使用scan.NextLine,但仍然不起作用

public static void main (String[] args) throws IOException
{
    File f = new File("inData.txt");

    House[] list = new House[7];
    Scanner scan = new Scanner(f);
    int count = 0;

    while (scan.hasNext())
    {
       list[count] = new House(scan.next(), scan.next(), scan.next(), scan.nextInt());

       count++;
    }
该文件来自一个名为“inData.txt”的记事本文件。这是一张照片:文件的图片。

我得到的错误消息是“java.util.InputMismatchException”

这是我的家庭课程代码

public class House
{
    private String houseID, town, zipCode;
    private int price;

    public House(String houseID, String town, String zipCode, int price)
    {
        this.houseID = houseID;
        this.town    = town;
        this.zipCode = zipCode;
        this.price   = price;
    }

您的问题是Scanner()读取由空格分隔的值,您希望每行解析为4个值。这将适用于输入文件的前四行,但是有两行技术上有5个值,因为这些行上的城市值包含空格。这会使你的扫描仪失去同步,你会得到不好的行为和/或结果

如果您无法控制输入的格式,那么您将不得不做一些比您在这里所做的更复杂的事情。Scanner()无法忽略第5行和第6行城市值中两个单词之间的空格


我处理这个问题的方法是抛弃扫描器,将每一行作为单个字符串读入,然后对该行应用正则表达式,从输入行中提取各个字段。您还可以执行
split()
,并假设如果返回5个元素,那么元素2和3应该组合成一个元素。这有点骇人听闻……如果你的城市名称中有两个空格怎么办?

你没有显示文件的外观,你看到了什么错误。。。请告诉并展示细节。哦,非常真实。我完全忘了我必须包括只有一个单词的城镇名称。非常感谢。我不知道你为什么接受另一个答案。他错了。您不需要
scan.nextLine()
调用。
next()
nextInt()
调用将通过换行符传递。它们只是空白。我甚至不在乎你是否认为我的答案是正确的,但请不要接受一个实际上是错误的答案。我在数据上运行了精确的代码,如果第5行和第6行中没有空格,它就可以正常工作。你的代码很好。请保持S.O.的纯洁,不要让它认为你接受了一个错误的答案。-你可以收回你的批准。史蒂夫在给出文本文档的格式之前,我发布了那个“其他答案”,不知道另一个答案会是什么样子,它是完全可以接受的。现在你已经复制了我说的话,这至少是正确的。但是现在有两个完全相同的答案,其中一个没有另一个提供那么多的信息,而且可能是从另一个那里偷来的。我不在乎要点,但由于你最初的两个答案都是错误的,现在把一个完全不同的答案放在适当的位置是狡猾和错误的,这不是投票人或复选标记的反应。-您的答案是错误的…您应该删除它们。非常感谢各位,我将Steve的答案标记为正确答案,因为他澄清了我的程序在没有
scan.nextLine()
调用的情况下运行良好,只要我没有任何空格。