Java 读取外部文本文件并存储到数组中
如何读取外部文本文件(可能使用扫描仪),并将每行中的2个值存储到数组中 我想存储节点id,它是每行的第一个值,以及父编号,它是每行的最后一个值 文本文件包含您在下面看到的内容Java 读取外部文本文件并存储到数组中,java,arrays,java.util.scanner,Java,Arrays,Java.util.scanner,如何读取外部文本文件(可能使用扫描仪),并将每行中的2个值存储到数组中 我想存储节点id,它是每行的第一个值,以及父编号,它是每行的最后一个值 文本文件包含您在下面看到的内容 1 2,7,|0|BLACK|NULL 10 3,4,12,|3|BLACK|3 11 4,12,|4|BLACK|4 12 8,10,11,|3|BLACK|8 2 1,3,6,8,|1|BLACK|1 3 2,4,5,6,8,10,|2|BLACK|2
1 2,7,|0|BLACK|NULL
10 3,4,12,|3|BLACK|3
11 4,12,|4|BLACK|4
12 8,10,11,|3|BLACK|8
2 1,3,6,8,|1|BLACK|1
3 2,4,5,6,8,10,|2|BLACK|2
4 3,5,9,10,11,|3|BLACK|3
5 3,4,8,|3|BLACK|3
6 2,3,|2|BLACK|2
7 1,8,|1|BLACK|1
8 2,3,5,7,9,12,|2|BLACK|2
9 4,8,|3|BLACK|8
正则表达式方法(将数组位留给读者作为练习):
Shonna,您可以使用HashMap、扫描仪和一些简单的字符串解析来实现您想要的。这是我的全班同学:
import java.io.*;
import java.util.*;
public class nodes {
private static HashMap<Integer, String> map = new HashMap<Integer, String>();
public static void main(String[] args) {
File file = new File("nodes.txt");
Scanner scnr = null;
try {
scnr = new Scanner(file);
} catch (FileNotFoundException e) {
}
while(scnr.hasNext()) {
String line = scnr.nextLine();
String[] getId = line.split("\\s+");
int id = Integer.parseInt(getId[0]);
int count = 0;
int copy = 0;
for(int i = 0; i < line.length(); i++) {
if(line.charAt(i) == '|')
count++;
if(count == 3) {
copy = i;
break;
}
}
String parent = line.substring(copy + 1);
map.put(id, parent);
System.out.println(map);
}
}
}
import java.io.*;
导入java.util.*;
公共类节点{
私有静态HashMap map=newhashmap();
公共静态void main(字符串[]args){
File File=新文件(“nodes.txt”);
扫描仪scnr=空;
试一试{
scnr=新扫描仪(文件);
}catch(filenotfounde异常){
}
while(scnr.hasNext()){
String line=scnr.nextLine();
字符串[]getId=line.split(\\s+);
intid=Integer.parseInt(getId[0]);
整数计数=0;
int copy=0;
对于(int i=0;i
它所做的是读取文件的每一行,首先提取节点id。然后它循环遍历该行中的每个字符,直到它计数到三个
,此时我们知道该行的其余部分将是节点的父级。完成此操作后,它将id与HashMap中的父项配对。到目前为止,您有什么发现?谢谢,当我运行..线程“main”java.lang.NullPointerException中的异常位于Project1Scanner.main(Project1Scanner.java:19)时,我遇到了一个错误
import java.io.*;
import java.util.*;
public class nodes {
private static HashMap<Integer, String> map = new HashMap<Integer, String>();
public static void main(String[] args) {
File file = new File("nodes.txt");
Scanner scnr = null;
try {
scnr = new Scanner(file);
} catch (FileNotFoundException e) {
}
while(scnr.hasNext()) {
String line = scnr.nextLine();
String[] getId = line.split("\\s+");
int id = Integer.parseInt(getId[0]);
int count = 0;
int copy = 0;
for(int i = 0; i < line.length(); i++) {
if(line.charAt(i) == '|')
count++;
if(count == 3) {
copy = i;
break;
}
}
String parent = line.substring(copy + 1);
map.put(id, parent);
System.out.println(map);
}
}
}