java - 我的代码的 For 循环出错?

标签 java servlets for-loop

我正在尝试将一个没有空格的句子分成 3 个单词的集合。下面是这句话。

MyNamePanBokVa

以下是我的代码

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
    {
        //String[] listOfWords = request.getParameter("wordList").trim().split("\n");
        //int percentage = Integer.parseInt(request.getParameter("percentage"));

        PrintWriter pw = response.getWriter();

        int numberOfKnownWords = 0;

        //Read the Hash File
        String str = "";
        File inputFile = new File("C:/Users/xxx/Desktop/Test.txt");
        HashSet<String>set = new HashSet<String>();
        BufferedReader br = new BufferedReader(new FileReader(inputFile));

        while((str=br.readLine())!=null)
        {
            int lastIndex = 0;

            for(int i=0;i<=str.length();i=i+3)
            {
                try
                {
                    String stringPiece = str.substring(i, i+3);
                    lastIndex = i;
                    pw.println(stringPiece);
                }
                catch(Exception arr)
                {
                    String stringPiece = str.substring(lastIndex, str.length());
                    pw.println(stringPiece);
                }
            }
        }

    }

不幸的是,这会生成以下输出。

MyN
ame
Pan
Bok
BokVa

这应该是,

MyN
ame
Pan
Bok
Bok
Va

我猜我的 for 循环中有一个错误,但我无法发现它。这里出了什么问题?

最佳答案

考虑当 i 位于 V 时的情况。

MyNamePanBokVa
            ^
我= 12 到目前为止的输出:

MyN
ame
Pan
Bok


   {
     String stringPiece = str.substring(i, i+3); 
    //throws exception, lastindex is not updated
     lastIndex = i;
    }
    catch(Exception arr)
                    {       
                        String stringPiece = str.substring(lastIndex, str.length());
                        // lastIndex =9 prints BokVa
                        pw.println(stringPiece);
                    }

关于java - 我的代码的 For 循环出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21670915/

相关文章:

java - 在多次调用的函数中对数组进行一次排序

java - JAXB 对象 - 哈希码和等于

spring - 注册过滤器时 "addMappingForServletNames()"的含义是什么?

c++ - 检查元素是 std::vector 中的第一个还是最后一个

c - 我的 for 循环序列没有以周长结束结束

java - 为什么会抛出 ConcurrentModificationException 以及如何调试它

java - BufferedReader java.io.IOException : stream is closed

java - Hibernate:无法访问 TransactionManager 或 UserTransaction 以进行物理事务委托(delegate)

java - 每个路径一个 Servlet 还是在一个 Servlet 中处理多个路径?

java - 使用 foreach 循环输入二维数组