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

问题描述 投票:-3回答:2

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

java string counter separator
2个回答
0
投票
Parser.parse(lines).linecount();//<--------- Here is the problem

Parser.parse()返回Stringlinecount()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]"

-1
投票
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
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.