为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕姐4208626 2022-09-28 16:30:35
我有一个以该领域为主题的课程。我正在尝试创建该方法并分别输出行数和字数。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.字符串对非静态方法拆分(字符串)进行静态引用
查看完整描述

4 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

你可以试试这个:


private static String array;


public static void parse(List<String> lines){

    array = String.join(System.lineSeparator(), lines); 

}


public static int lines(){

    return (array.split("[\r\n]")).length;

}


public static int words() {

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

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

    for (String a : newStringArr){

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

    }

    return counter;

}


public static void main(String[] args) {

    List<String> lines = Arrays.asList(new String[]{"one", "two three", ""});

    LineCounter.parse(lines);

    System.out.println(LineCounter.lines());

    System.out.println(LineCounter.words());

}


查看完整回答
反对 回复 2022-09-28
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

发生这种情况是因为 String 类不是静态的。仔细查看 Java 文档中的方法的签名。split()


公共字符串[] 拆分(字符串正则表达式)


正如编译器明确抱怨的那样,您无法对非静态方法进行静态引用。


也许你需要这个?


public static int wordcount(String myString) {

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

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

    for (String a : newStringArr) {

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

    }

    return counter;

}

将 String 参数传递给该参数,然后对其执行拆分操作。此外,您还缺少一个右括号。wordCount()


查看完整回答
反对 回复 2022-09-28
?
跃然一笑

TA贡献1826条经验 获得超6个赞

你现在不会在任何事情上分裂。在这里,您尝试在 String 类上静态调用拆分。您需要在字符串的实例上进行拆分。您的所有方法都是静态的,因此,如果您希望它们拆分某些内容或计算传递该值所需的单词。


  public static int linecount(){

    return (String.split("[\r\n]")).length;

  }


查看完整回答
反对 回复 2022-09-28
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

你在这里分裂什么..?你确实意识到你不能写.您需要调用 拆分 来拆分它。你为什么不尝试一些事情, 比如:String.split(..)object ( string )


public static int getWordCount(String lines){

return lines.split(" |\n").length;//based on word separator <space>  and \n


}


    public static void main(String[] args) 

    {

        String nChars = "ABCDEF 12\nBLue";

        System.out.println(getWordCount(nChars));

    }


查看完整回答
反对 回复 2022-09-28
  • 4 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信