我有一个文本文件,内容为
NFR1: (some text)
NFR2: (some text)
NFR3: (some text)
我想将具有模式“N”的文本文件中的所有字符串分组。
这是我到目前为止的代码:
import java.util.List;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
List<String> result = new ArrayList<String>();
Pattern patt = Pattern.compile("^N.*");
BufferedReader r = new BufferedReader(new FileReader("fileName"));
String line;
try {
while ((line = r.readLine()) != null) {
Matcher m = patt.matcher(line);
while (m.find()) {
int start = m.start(0);
int end = m.end(0);
result.add(m.group());
System.out.println(result);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出如下:
[NFR1:]
[NFR1:,NFR2:]
[NFR1:,NFR2:,NFR3]
如何让数组只读
[NFR1:,NFR2:,NFR3]
没有上面的其他两个元素?
当我添加代码行以获取最后一个元素时:
if (result != null && !result.isEmpty()) {
System.out.println("Last element is:");
System.out.println(result.get(result.size()-1));
}
输出为:
The last element is:
NFR1:
The last element is:
NFR2:
The last element is:
NFR3:
我做错了什么?
最佳答案
你没有做任何逻辑错误。只是您在 while 循环内部而不是外部进行打印。
while ((line = r.readLine()) != null) {
Matcher m = patt.matcher(line);
while (m.find()) {
int start = m.start(0);
int end = m.end(0);
result.add(m.group());
//System.out.println(result); printing inside and so first u add 1 then 2 then 3.
}
}
System.out.println(result);//Move here
if(!result.isEmpty()){//result != null is redundant. You have already initialized.
System.out.println("Last element is:" + result.get(result.size() - 1));
}
关于java - 如何将 ArrayList 中的最后一个元素存储到另一个 ArrayList (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53094746/