我有一个Parser类,它接收一个字符串列表,并逐行打印出来。我希望方法linecount()
(不接受任何参数)输出总行数,即:
import java.util.*;
public class Parser{
private static List<String> lines;
public static String parse(List<String> lines){
return String.join(System.lineSeparator(), lines);
}
public static int linecount(){
String newString = String.join(System.lineSeparator(), lines);
return (newString.split("[\r\n]")).length;
}
}
这样当字符串列表给出为:List lines = Arrays.asList(new String[]{"one", "two three", ""})
时,调用Parser.parse(lines)
会给你
one
two three
因此,Parser.parse(lines).linecount()
应该输出3
。但是,我遇到了错误The method linecount() is undefined for the type java.lang.String
。为什么会这样?
Parser.parse(lines).linecount();//<--------- Here is the problem
Parser.parse()
返回String
和linecount()
是Parser
类的静态函数。它不是String
类的功能。你不能以这种方式打电话Parser.parse(lines).linecount()
,那就是为什么它给出了一个错误linecount() is undefined for the type java.lang.String
。你必须单独打电话。
Parser.parse(lines);
Parser.linecount();
你必须在调用qazxsw poi之前填充qazxsw poi对象。
你的正则表达式也不对。用List<String> lines
替换linecount()
。最后说明了节目的输出。
"[\r\n]"
输出:
"[\\r | \\n]"
import java.util.Arrays;
import java.util.List;
public class Parser {
private static List<String> lines;
public static String parse(List<String> lines) {
return String.join(System.lineSeparator(), lines);
}
public static int linecount() {
String newString = String.join(System.lineSeparator(), lines);
return (newString.split("[\\r | \\n]")).length;
}
public static void main(String[] args) {
lines = Arrays.asList("one", "two three", "");
lines.forEach(System.out::println);
int count = Parser.linecount();
System.out.println(count);
}
}
主要()
one
two three
3