Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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_Java.util.scanner - Fatal编程技术网

Java:如何从输入文件读取和存储数据?

Java:如何从输入文件读取和存储数据?,java,java.util.scanner,Java,Java.util.scanner,我需要存储具有以下格式的输入文件中的数据: k=5 1: 62 35 2: 10 49 1 Banana 2 Apple 我需要将k的值存储为int,然后我需要将接下来两行的int值存储为[2][2]数组,最后我需要将字符串“Banana”和“Apple”存储在一个列表中。我尝试使用useDelimiter,但它忽略了我的分隔符,并将整行作为一个行实例读取 public static void main(String[] args) { File file = new File("

我需要存储具有以下格式的输入文件中的数据:

k=5
1: 62 35
2: 10 49

1 Banana
2 Apple
我需要将k的值存储为int,然后我需要将接下来两行的int值存储为[2][2]数组,最后我需要将字符串“Banana”和“Apple”存储在一个列表中。我尝试使用useDelimiter,但它忽略了我的分隔符,并将整行作为一个行实例读取

public static void main(String[] args) {

    File file = new File("input.text");

    try {

        Scanner scanner = new Scanner(file);
        scanner.useDelimiter("n=");
        scanner.useDelimiter(".:");             
        int k = scanner.nextLine();
        for (int i = 0; i < 2; i++)
            for (int j = 0; j < 2; j++)
                array[i][j] = scanner.nextInt();
            }
        } scanner.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

}
publicstaticvoidmain(字符串[]args){
文件=新文件(“input.text”);
试一试{
扫描仪=新扫描仪(文件);
scanner.useDelimiter(“n=”);
scanner.useDelimiter(“.:”);
int k=scanner.nextLine();
对于(int i=0;i<2;i++)
对于(int j=0;j<2;j++)
数组[i][j]=scanner.nextInt();
}
}scanner.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}
}

如果文本总是具有相同的结构,那么您可以这样做

int k = Integer.parseInt(scanner.nextLine().substring("=")[1]);
String currentLine;
for (int i = 0; i < 2; i++)
   currentLine = scanner.nextLine().substring(currentLine.indexOf(" ") + 1)
   for (int j = 0; j < 2; j++)
       array[i][j] = currentLine.split(" ")[j];
   }
}
int k=Integer.parseInt(scanner.nextLine().substring(“=”[1]);
串电流线;
对于(int i=0;i<2;i++)
currentLine=scanner.nextLine()子字符串(currentLine.indexOf(“”+1)
对于(int j=0;j<2;j++)
数组[i][j]=currentLine.split(“”[j];
}
}

然后,对于香蕉和苹果解析,应用相同的逻辑。子字符串,直到从第一个空格+1字符的索引开始,因为我们不想保留它。然后将该字符串添加到列表中。

您尝试的代码是…抱歉,添加了我目前得到的内容。您可以使用
next()
获取整个字符串,并使用分隔符对其应用拆分。请添加您得到的输出/结果以及您想要的输出/结果。例如,给定您已经提供的示例输入,数组内容是什么,以及您希望它们是什么。