簡體   English   中英

為什么我的方法未定義為 java.lang.String 類型

[英]Why is my method undefined for type java.lang.String

我有一個 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) 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();

並且您必須在調用linecount()之前 popultae List<String> lines Object 。

你的正則表達式也不對。 "[\\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
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;
  }
}

主要的()

Parser p = new Parse();
List lines = p.parse(Arrays.asList(new String[]{"one", "two three", ""}));
System.out.println(lines);

System.out.println(p.linecount());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM