我有一个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
。为什么会这样?
答案 0 :(得分:0)
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();
在调用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
答案 1 :(得分:-1)
.component
main()
import java.util.*;
public class Parser{
private List<String> lines;
public String parse(List<String> lines){
this.lines = lines;
return String.join(System.lineSeparator(), lines);
}
public int linecount(){
String newString = String.join(System.lineSeparator(), lines);
return (newString.split("[\r\n]")).length;
}
}