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 _ _ _ _ _ _
输入一个字母来猜测单词
答案 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++;
}
}