java - 难以理解逻辑

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

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

请您找出错误。

提前致谢!!

<小时/>

输入字母来猜单词

e

E _ _ _ _ _ _

输入字母来猜单词

o

E O O _ _ _ _ _ _

输入字母来猜单词

M O O _ _ _ _ _ _

输入字母来猜单词

n

莫诺_ _ _ _ _ _

输入字母来猜单词

最佳答案

看起来您的代码假设 upd 字符串的长度与 line 字符串的长度相同。但是,一旦将新的 String 分配给 upd,它的长度就会增加 2(由于添加了空格),这意味着 line 的索引code> 字符串不再与 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++; 
     }
 }

关于java - 难以理解逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40255007/

相关文章:

java - 数据库中的数据如何在不同的 Activity 中分配给数组?

java - 通过选择 JComboBox 选项动态添加 JTextFields 和 JLabels

Java Appium Android - 如何处理侧边栏或左侧面板?

java - 为什么 Spring Around 建议可以吞下或停止传播目标方法抛出的异常?

java - 砖 block 碰撞 Java

java - 为什么 Java 中的 new java.util.Date(Long.MIN_VALUE) 等于 "Sun Dec 02 11:47:04 EST 292269055"?

java - CXF 响应对象出现 NoSuchMethodError

java - 字符串频率搜索未找到所有单词

java - 在 Spring Boot 中加密应用程序属性

java.lang.NoClassDefFoundError : Could not initialize class org. jose4j.jwa.AlgorithmFactoryFactory JsonWebSignature getCompactSerialization 错误