Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字数计算算法问题_Java_String_Stringbuilder - Fatal编程技术网

Java 字数计算算法问题

Java 字数计算算法问题,java,string,stringbuilder,Java,String,Stringbuilder,因此,我正在尝试制作一个字数计算程序,用户可以在其中粘贴文本以获得输入文本的字数,从而获得字数。在中键入文本在很大程度上起作用,但有时当我尝试返回并替换文本时,会出现字符串索引超出范围的错误。粘贴工作,但我有问题的字符串索引超出范围的问题,以及在这里。我的逻辑是这样的:一个空格等于一个单词,两个空格背靠背等于减去一个单词,字符串的结尾算作一个单词。我对Java比较陌生,我认为这将是一件容易做到的事情,我错了!如能提供帮助/解释,将不胜感激 public static int getWordCo

因此,我正在尝试制作一个字数计算程序,用户可以在其中粘贴文本以获得输入文本的字数,从而获得字数。在中键入文本在很大程度上起作用,但有时当我尝试返回并替换文本时,会出现字符串索引超出范围的错误。粘贴工作,但我有问题的字符串索引超出范围的问题,以及在这里。我的逻辑是这样的:一个空格等于一个单词,两个空格背靠背等于减去一个单词,字符串的结尾算作一个单词。我对Java比较陌生,我认为这将是一件容易做到的事情,我错了!如能提供帮助/解释,将不胜感激

 public static int getWordCount(String getInput, int e){
    int numberOfWords = 0;
    char l1 = 0;
    char l2 = 0;
    StringBuilder convertInput = new StringBuilder(getInput);
    System.out.println(convertInput);
    for (int i = 0, i1 = 1; i < getInput.length();i++, i1++){
        l2 = convertInput.charAt(i);
        if (l2 == ' '){
            numberOfWords += 1;
            l1 = convertInput.charAt(i1);
        }
        if (i == getInput.length() - 1){
            numberOfWords += 1;
        }
        if (l2 == ' ' && l1 == ' '){
            numberOfWords -= 1;
        }
    }
    return numberOfWords;
 } // end of getWordCount method 
publicstaticintgetwordcount(stringgetinput,inte){
int numberOfWords=0;
字符l1=0;
字符l2=0;
StringBuilder convertInput=新的StringBuilder(getInput);
System.out.println(convertInput);
for(inti=0,i1=1;i
您可以使用以下工具轻松快速地完成此操作:

String phrase = "word1 word2 word3 word4";
String delims = " "; //u can declare more delims here like delims = " ,.{[]}\"; 
String[] tokens = phrase.split(delims);

tokens.length = number of words in your string

由于i1以1开头,它将到达getInput.length()(当我到达getInput.length()-1时),此时convertInput.charAt(i1)将超出范围。“当我尝试返回并替换文本时”-从概念上讲,没有理由在简单计算单词时替换文本。这对我来说意味着你的算法太复杂了(看看吧,的确如此)。这里有一些想法,看看它们是否能帮助您清理代码。StringBuilder的作用是什么?您应该排除空单词(标记)。每当您在一行中有两个分隔符时(例如回车+换行符),就会出现空单词。直到现在,我还不知道字符串标记。谢谢你的帮助!