难以理解逻辑

时间:2016-10-26 06:16:51

标签: java

 for (int k=0;k<lngth;k++)
                {
                    if (Character.toString(line.charAt(k)).equals(gss))
                    {
                        upd=upd.substring(0,k)+" "+gss+" "+upd.substring(k+1);
                        c++; 
                    }
                }

在上面的代码中,&#39; gss&#39;是用户输入的一封信,&#39; line&#39;是说EMOTION,&#39; lngth&#39;是行的长度和&#39; upd&#39;如果输入的字母与&#39; line&#39;的任何字母匹配,则存储更新的字符串。以下是输出的一部分。我无法理解这个错误。

请你能找到错误。

提前致谢!!

输入一个字母来猜测单词

ë

E _ _ _ _ _ _

输入一个字母来猜测单词

0

E O O _ _ _ _ _ _

输入一个字母来猜测单词

M O O _ _ _ _ _ _

输入一个字母来猜测单词

名词

M O N O _ _ _ _ _ _

输入一个字母来猜测单词

1 个答案:

答案 0 :(得分:2)

看起来您的代码假定upd字符串的长度与line字符串相同。但是,一旦将新String分配给upd,就会将其长度增加2(由于添加了空格),这意味着line字符串的索引不再与索引相匹配upd字符串。

尝试删除添加的空格并查看它是否解决了您的问题:

 for (int k=0;k<lngth;k++)
 {
     if (Character.toString(line.charAt(k)).equals(gss))
     {
         upd=upd.substring(0,k)+gss+upd.substring(k+1);
         c++; 
     }
 }