Java:使用字符串 charAt 方法的 for 循环崩溃

2024-03-02

我在这段代码中有一个错误。调试器表明原因是这行代码char chr = getSecretWord.charAt(i);

这段代码的作用是寻找之间的匹配userInput and secretWord。我有for loop逐一检查secretWord字母的长度,如果有字母匹配则返回true。如果不是,则返回 false...但是当它应该返回 false 时程序崩溃...我猜这是这一行的内容,但不知道到底是什么getSecretWord.charAt(i);

    private boolean isMatchingSecretWord(String userInput)
{
    String secretWord = "";
    String getSecretWord = getSecretWord();
    for (int i = 0; i <= getSecretWord.length();i++)
        {
        char chr = getSecretWord.charAt(i);
        secretWord = ""+chr;

        if (secretWord.equals(userInput))
        {
            println("is true");
            return true;
        }
    }
    return false;
}

作为旁注,我对这段代码所做的是否正确,将 getSecretWorld() 方法分配给字符串,以便我可以使用 Strings 方法length()?

String getSecretWord = getSecretWord();

for (int i = 0; i <= getSecretWord.length();i++)

调试代码:

Exception in thread "Thread-4" java.lang.StringIndexOutOfBoundsException: String index out of range: 4    
    at java.lang.String.charAt(String.java:686)    
    at Hangman.isMatchingSecretWord(Hangman.java:49)    
    at Hangman.userInput(Hangman.java:34)    
    at Hangman.run(Hangman.java:20)*

for (int i = 0; i <= getSecretWord.length(); i++)

应该:

for (int i = 0; i < getSecretWord.length(); i++)
//               ^^^
//             see here

的有效索引n- 字符串(或n-元素数组)是0通过n-1包括的。

所以,如果你的密语是xyyzy,有效索引为 0 到 4。你原来的循环迭代i设置为零至five,因此出现了问题。


但是,当您可以使用简单的代码时,其中似乎有很多不必要的代码。

首先,我会消除一个混乱的根源 - 函数名称听起来像用户输入和秘密单词必须完全匹配,而您的评论表明不然:

谢谢,这有效。但循环的原因是用户输入一个字母,我想看看该字母是否在 SecretWord 内。 (这是一个刽子手游戏)。

在这种情况下,您只想查看秘密单词中是否存在单个字符。我会更改函数名称以适应,即使这样,也可以用更少的代码来完成:

private boolean isInSecretWord (String userInput) {
    String secretWord = getSecretWord();
    return secretWord.contains(userInput);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:使用字符串 charAt 方法的 for 循环崩溃 的相关文章

  • 使用 Spring MVC 返回 PDF 文件

    实际上 我有这个功能 我有一个框架 可以在其中设置 URL ip port birt preview report report rptdesign format pdf parameters 并且该框架呈现 PDF 文件 但我想隐藏该网址
  • Spring Data:限制自定义查询的结果

    在我的 Spring 数据存储库中 我 必须 使用自定义查询 Query注解 我知道我可以限制这样的命名查询中的结果数量 Iterable
  • Java 9 中可以使用提前编译吗?

    As per JEP 295 http openjdk java net jeps 295 任何 JDK 模块 类或用户代码的 AOT 编译都是实验性的 JDK 9 中不支持 要使用 AOT 化的 java base 模块 用户必须编译该模
  • 隐藏类的 System.out.print 调用

    我正在使用 java 库 jar 文件 该文件的作者放入了一堆System out print and System out printlns 有没有办法隐藏特定对象的这些消息 编辑 看起来jar文件似乎正在创建一堆线程 并且每个线程都有它
  • php 区分中文和英文字符

    如何区分中文和英文字符for loops 这是代码
  • 我需要显式关闭连接吗?

    我持有一个实例MongoClient and DB在我的应用程序中 每次我想执行某些操作时 我都会调用getCollection 我想知道是否需要显式关闭连接 就像connection close 在 JDBC 中 强调一下 我只有一个Mo
  • ASM之前看一下maxStack指令吗?

    我正在尝试使用 ASM 库将字节代码转换为不同的格式 这可以使用 MethodVisitor 来完成 就像这个简单的测试代码一样 return new MethodVisitor ASM7 Override public void visi
  • 用于匹配重复子字符串的单个js正则表达式?

    假设我有一个字符串 例如 where is mummy where is daddy 我想用空字符串替换任何一组重复子字符串 所以在这种情况下where and is元素将被删除 结果字符串将是 mummy daddy 我想知道是否有任何单
  • 在Java中使用BufferedWriter写入文件时监视文件大小?

    我正在将一个可能很长的项目列表写入文件 我正在写的项目的长度是可变的 如果生成的文件大小大于10M 则应将其分成多个文件 为了提高性能 我目前使用 BufferedWriter 如下所示 final FileOutputStream fos
  • 给定一个单词列表 - 在 java 中完成单词的好的算法是什么?权衡:速度/效率/内存占用

    我正在探索潜在的免费 付费应用程序的硬件 软件要求 最终目标是移动 Java 应用程序 该应用程序将从这个简单的目标开始 给定数据库中相关单词的列表 能够对单个字符串输入进行单词补全 换句话说 我已经知道数据库的内容 但算法的内存占用 速度
  • Java中无参数的for循环

    我在看别人的代码 发现了这段代码 for 我不是 Java 专家 这行代码在做什么 起初 我认为这会创建一个无限循环 但在该程序员使用的同一个类中 while true 其中 如果我错了 请纠正我 是一个无限循环 这两个相同吗 为什么有人会
  • 设置 JAVA_HOME 变量时出现问题

    所以我刚刚下载了 Android Studio 并尝试设置 JAVA HOME 变量以便我可以运行它 我使用的是 Windows 8 并按照我找到的所有说明进行操作 但无济于事 转到高级系统设置 gt 环境变量 然后使用包含我的 jre7
  • 处理照片上传的最佳方式是什么?

    我正在为一个家庭成员的婚礼制作一个网站 他们要求的一个功能是一个照片部分 所有客人都可以在婚礼结束后前往并上传他们的照片 我说这是一个很棒的想法 然后我就去实现它 那么只有一个问题 物流 上传速度很慢 现代相机拍摄的照片很大 2 5 兆 我
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • Apache HttpClient TCP Keep-Alive(套接字保持活动)

    我的 http 请求需要太多时间才能被服务器处理 大约 5 分钟 由于连接闲置 5 分钟 代理服务器将关闭连接 我正在尝试在 Apache DefaultHttpClient 中使用 TCP Keep Alive 来使连接长时间处于活动状态
  • Apache Kafka 是否提供异步订阅回调 API?

    我的项目正在将 Apache Kafka 视为老化的基于 JMS 的消息传递方法的潜在替代品 为了让这个过渡尽可能的顺利 如果替代的排队系统 Kafka 有一个异步订阅机制那就更理想了 类似于我们当前项目使用的JMS机制MessageLis
  • Java 相当于 Python 的 urllib.urlencode(基于 HashMap 的 UrlEncode)

    From https stackoverflow com questions 2018026 should i use urllib or urllib2 2018103 2018103 Java 中 Python 的 urllib url
  • Java,如何管理线程读取socket(websocket)?

    我有一个 WebSocket 服务器 我的服务器创建一个新线程来处理新连接 该线程一直处于活动状态 直到 websocket 中断 我的问题 对于 1 000 000 个连接 我需要 1 000 000 个线程 我如何通过一个线程处理多个
  • 使用 Hibernate 防止无限循环数据检索

    我想知道 想象一个场景 例如 POJO public class User private String userName private String name private String surname private List
  • 如何在 LLVM 中实现字符串数据类型?

    我一直在看LLVM http llvm org 最近 我发现它是一个非常有趣的架构 然而 浏览教程和参考材料 我看不到任何关于如何实现的示例string http en wikipedia org wiki String computer

随机推荐