[英]How to parse an int from a string? (Java)
我的输入看起来像这样。 假设我要在打印出一堆文本行后尝试提取两个数字。
abcdef
abcdef
abcdef
abcdef
123 456
这是我尝试使用的伪代码。
input.useDelimiter(" "); //I've tried a lot of patterns to no avail.
while(!input.hasNextInt()){
System.out.println(input.next());
}
System.out.println("Found Ints");
int posRow = input.nextInt();
System.out.println("posRow: "+posRow);
int posCol = input.nextInt();
System.out.println("posCol: "+posCol);
我的输出最终为
abcdef
abcdef
abcdef
abcdef
123
Found Ints
posRow: 456
NoSuchElementException
因此,我假设问题在于它将文本的最后一行和第一个数字读取为一个块,而不是整数,因为没有空格。 我试过使用\\ r \\ n \\ r \\ n等,似乎无法弄清楚。
感谢您提供的所有帮助!
我将使用hasNextLine()
代替hasNextInt
,并且假设数字始终是最后一行,则可以将其分开。
这个怎么样?
input.useDelimiter(" ");
while(input.hasNextLine()){
System.out.println(input.nextLine())
}
System.out.println("Found Ints");
int posRow = input.nextInt();
System.out.println("posRow: "+posRow);
int posCol = input.nextInt();
System.out.println("posCol: "+posCol);
尝试这个...
input.useDelimiter(Pattern.compile("\\s|\\n"));
这将使用空格或换行符作为分隔符。
问题是,使用空格作为定界符会使所有第一行到数字之间的空格成为要评估的一项。 这不是一个整数。 然后是下一个,但是最后一个nextInt没有更多内容,因此是例外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.