猿问

如何计算由系统分隔的字符串中的单词和行数分离器()?

我有一个以该领域为主题的课程。我正在尝试创建该方法并分别输出行数和字数。ParserList<String> lineslinecount()wordcount()


这就是我所拥有的:


import java.util.*;


public class Parser{

  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 int wordcount(){

    String[] newStringArr = String.split("[\r\n]");

    int counter = (String.split("[\r\n]")).length;

    for (String a : newStringArr){

      counter = counter + (a.length() - a.replaceAll(" ", "").length());

    return counter;

  }

}

鉴于我的行列表:List lines = Arrays.asList(new String[]{"one", "two three", ""})


如果我调用该方法,我应该得到 的输出,并且该方法还应该给我一个输出。但是,我收到一个错误。我可以知道如何解决这个问题吗?Parser.parse(lines).linecount()3Parser.parse(lines).wordcount()3


这些是我收到的错误:


错误:无法从类型 java.lang.字符串对非静态方法拆分(字符串)进行静态引用


错误:无法从类型 java.lang.字符串对非静态方法拆分(字符串)进行静态引用


错误:无法从类型 java.lang.字符串对非静态方法拆分(字符串)进行静态引用


慕姐4208626
浏览 103回答 4
4回答

鸿蒙传说

你可以试试这个:private static String array;public static void parse(List<String> lines){&nbsp; &nbsp; array = String.join(System.lineSeparator(), lines);&nbsp;}public static int lines(){&nbsp; &nbsp; return (array.split("[\r\n]")).length;}public static int words() {&nbsp; &nbsp; String[] newStringArr = array.split("[\r\n]");&nbsp; &nbsp; int counter = (array.split("[\r\n]")).length;&nbsp; &nbsp; for (String a : newStringArr){&nbsp; &nbsp; &nbsp; counter = counter + (a.length() - a.replaceAll(" ", "").length());&nbsp; &nbsp; }&nbsp; &nbsp; return counter;}public static void main(String[] args) {&nbsp; &nbsp; List<String> lines = Arrays.asList(new String[]{"one", "two three", ""});&nbsp; &nbsp; LineCounter.parse(lines);&nbsp; &nbsp; System.out.println(LineCounter.lines());&nbsp; &nbsp; System.out.println(LineCounter.words());}

明月笑刀无情

发生这种情况是因为 String 类不是静态的。仔细查看 Java 文档中的方法的签名。split()公共字符串[] 拆分(字符串正则表达式)正如编译器明确抱怨的那样,您无法对非静态方法进行静态引用。也许你需要这个?public static int wordcount(String myString) {&nbsp; &nbsp; String[] newStringArr = myString.split("[\r\n]");&nbsp; &nbsp; int counter = myString.split("[\r\n]").length;&nbsp; &nbsp; for (String a : newStringArr) {&nbsp; &nbsp; &nbsp; &nbsp; counter = counter + (a.length() - a.replaceAll(" ", "").length());&nbsp; &nbsp; }&nbsp; &nbsp; return counter;}将 String 参数传递给该参数,然后对其执行拆分操作。此外,您还缺少一个右括号。wordCount()

跃然一笑

你现在不会在任何事情上分裂。在这里,您尝试在 String 类上静态调用拆分。您需要在字符串的实例上进行拆分。您的所有方法都是静态的,因此,如果您希望它们拆分某些内容或计算传递该值所需的单词。&nbsp; public static int linecount(){&nbsp; &nbsp; return (String.split("[\r\n]")).length;&nbsp; }

哈士奇WWW

你在这里分裂什么..?你确实意识到你不能写.您需要调用 拆分 来拆分它。你为什么不尝试一些事情, 比如:String.split(..)object ( string )public static int getWordCount(String lines){return lines.split(" |\n").length;//based on word separator <space>&nbsp; and \n}&nbsp; &nbsp; public static void main(String[] args)&nbsp;&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; String nChars = "ABCDEF 12\nBLue";&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(getWordCount(nChars));&nbsp; &nbsp; }
随时随地看视频慕课网APP

相关分类

Java
我要回答