为什么我的方法未为类型java.lang.String定义

时间:2019-04-11 11:11:40

标签: java string counter separator

我有一个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。为什么会这样?

2 个答案:

答案 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;
  }
}