从文件中读取多行中的多个值(Java)
Posted
技术标签:
【中文标题】从文件中读取多行中的多个值(Java)【英文标题】:Reading multiple values in multiple lines from file (Java) 【发布时间】:2014-05-08 00:49:37 【问题描述】:有没有办法将文件逐行读入Java,每行都有一系列整数(每行不同数量的整数)。例如:
2 5
1 3 4 5
2 4 8
2 3 5 7 8
等等
我会将每行中的行号和数字读入一个二维数组。
现在,这是我的代码:
int i=1, j;
try
Scanner sc=new Scanner(new File("mapinput.txt"));
while(sc.hasNext())
String line=sc.nextLine();
while(line!=null)
j=sc.nextInt();
Adj[i][j]=1;
i++;
catch(Exception e)System.err.println(e);;
我知道,这段代码的问题在于它在字符串行之后读取整数;我希望它读取那一行中的数字。有没有办法从字符串中读取数字?
更新: 我决定使用 StringTokenizer 路线;但是,当它到达我文件的最后一行时,我收到 java.util.NoSuchElementException: No line found 错误。这是我更新的代码:
try
Scanner sc=new Scanner(new File("mapinput.txt"));
String line=sc.nextLine();
st=new StringTokenizer(line, " ");
do
while(st.hasMoreTokens())
j=Integer.parseInt(st.nextToken());
Adj[i][j]=1;
line=sc.nextLine();
st=new StringTokenizer(line, " ");
i++;
while(st.hasMoreTokens());
catch(Exception e)System.err.println(e);;
【问题讨论】:
读入一行后,将该行拆分为 ' ' 字符。 问题是调用 sc.nextLine() 使扫描仪前进一行(因此跳过一行),然后您调用 sc.nextInt() 读取该位置旁边的 int。 【参考方案1】:一旦您阅读了一行,您就可以进行以下操作
String[] ar=line.split(" ");
并根据您的要求使用字符串数组
【讨论】:
【参考方案2】:查看 Java 库中的 #StringTokenizer 类。
您可以轻松地遍历文件并提取由空格分隔的integers
。它可以很好地处理两个 + 位整数。
要直接回答您的问题,有一种方法可以从String
获取数字。
看看
Integer.parseInt(String s);
这会从String
返回一个integer
。
文档是here
String s1 = "15 ";
String s2 = "03";
int answer = Integer.parseInt(s1.trim()) + Integer.parseInt(s2.trim());
System.out.println(answer);
打印出来:
18
【讨论】:
String s1 = "15 "
最后有一个空格可能是错字(没关系)所以无法解析... :)
这是一个错字。但是,您可以使用 .trim() 调用处理前导和尾随空格。谢谢以上是关于从文件中读取多行中的多个值(Java)的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Python 中的文件/流中懒惰地读取多个 JSON 值?