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++;
                    }
                }


在上面的代码中,“ gss”是用户输入的字母,“ line”是“ EMOTION”一词,“ lngth”是行的长度,如果输入的字母与以下任何一个匹配,则“ upd”存储更新后的字符串'line'的字母以下是输出的一部分。而且我无法理解错误。

如果您能找到错误,请。

提前致谢!!



输入字母猜单词

Ë

E _ _ _ _ _ _

输入字母猜单词

Ø

E O O _ _ _ _ _ _

输入字母猜单词



M O O _ _ _ _ _ _

输入字母猜单词

ñ

单核细胞增多症 _ _ _ _ _ _

输入字母猜单词

最佳答案

看起来您的代码假定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++;
     }
 }

07-25 23:23