Java:线程“主”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:

2024-06-02

我是初学者,谁能帮我弄清楚我们在做什么。我正在尝试读取字符串并将字符串的每个字符存储在数组中。

import java.util.Scanner;

public class CoreMainDigitExtractor {

    static Scanner inputString = new Scanner(System.in);

    public static void main(String[] args) {


        digitExtractor ExtracDig = new digitExtractor();

        System.out.println("Enter a String to Extract and Display Vertically in Reverse Order : ");
        String input1 = inputString.nextLine();
        System.out.println("User input String is : " + input1);
        System.out.println("Calling Method 'OrderByMaths' in Object 'ExtracDig' of Class 'digitExtractor', with User Input String....'"+input1+"'");    
        ExtracDig.OrderbyMaths(input1);

    }

}




public class digitExtractor {

    int tNumber;

    public digitExtractor() {
        // TODO Auto-generated constructor stub
    }

    public void OrderbyMaths(String numberSequence) {
        System.out.println("OrderbyMatch : Inside Method 'OrderbyMaths'....");
        System.out.println("OrderbyMatch : Initializing a variable of type int 'tNumberLength'.");
        int tNumberLength = numberSequence.length();
        System.out.println("OrderbyMatch : Variable Initialized of type int 'tNumberLength'.");
        System.out.println("OrderbyMaths : Capture length of User Input String into Variable 'tNumberLength'.");
        System.out.println("OrderbyMaths : The length of User Input String in Variable 'tNumberLength' is '" + tNumberLength + "'.");
        System.out.println("OrderbyMatch : Initializing an Array of type int 'arrNumberSequence'; with Size of Array equal to 'tNumberLength'.");
        char arrNumberSequence[] = new char[tNumberLength];
        System.out.println("OrderbyMatch : Initialized Array 'arrNumberSequence' with Size '" + arrNumberSequence.length + "'");
        int i = 0;

        while (i <= arrNumberSequence.length){
            arrNumberSequence[i] = numberSequence.charAt(i);
            System.out.println("OrderbyMatch : Value in Array Slot '"+arrNumberSequence[i]+"' is '"+ numberSequence.charAt(i)+"'");
            i++;    

        }

    }   

}

OUTPUT

输入要提取的字符串并以相反顺序垂直显示:

HACK

用户输入字符串是:HACK

使用用户输入字符串调用“digitExtractor”类的“ExtraDig”对象中的“OrderByMaths”方法....“HACK”

OrderbyMatch:内部方法“OrderbyMaths”....

OrderbyMatch :初始化 int 'tNumberLength' 类型的变量。

OrderbyMatch :变量初始化为 int 'tNumberLength' 类型。

OrderbyMaths :将用户输入字符串的长度捕获到变量“tNumberLength”中。

OrderbyMaths:变量“tNumberLength”中用户输入字符串的长度为“4”。

OrderbyMatch :初始化 int 'arrNumberSequence' 类型的数组;数组大小等于“tNumberLength”。

OrderbyMatch:初始化数组“arrNumberSequence”,大小为“4”

OrderbyMatch:数组槽“H”中的值为“H”

OrderbyMatch:数组槽“A”中的值为“A”

OrderbyMatch:数组槽“C”中的值为“C”

OrderbyMatch:数组槽“K”中的值为“K”

线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:4 在 java.lang.String.charAt(来源未知) 在 digitalExtractor.OrderbyMaths(digitExtractor.java:23) 在 CoreMainDigitExtractor.main(CoreMainDigitExtractor.java:16)

Regards

Dwenish


对于字符串HACK我们有一个.length of 4。 Java 中的索引从 0 开始,所以我们有

['H','A','C','K']
  ^   ^   ^   ^ 
  0   1   2   3

所以让我们在 while 循环中说i=4

while (i <= arrNumberSequence.length)
while (is 4 less than or equal to 4? yes 4==4 so continue with the loop) 

当我们尝试访问时charAt(4)它不是我们字符串的有效索引

['H','A','C','K']
  ^   ^   ^   ^   ^
  0   1   2   3   4

所以我们得到了异常

java.lang.StringIndexOutOfBoundsException: String index out of range: 4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:线程“主”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围: 的相关文章

随机推荐

  • 使用javascript滚动滚动条或鼠标滚轮后触发事件

    我想知道是否可以触发事件after使用滚动条或鼠标滚轮 或在触摸设备上滑动 时滚动页面 基本上 我想检测用户何时停止滚动 以便我可以进行 AJAX 加载 而不是在滚动时加载 看起来jQuery s scroll 每次用户滚动时都会触发 并且
  • 如何使用 Mercurial 将文件夹与现有 Heroku 应用程序链接

    我在 Bitbucket 上有一个现有的 Django 应用程序 我能够部署到 Herokuhg git https stackoverflow com q 9591380 343834 每当我想在应用程序文件夹中运行一些 heroku 命
  • 如何在Java中优雅地处理SIGKILL信号

    当程序收到终止信号时如何处理清理 例如 我连接到一个应用程序 希望任何第三方应用程序 我的应用程序 发送finish注销时的命令 发送该信息最好说什么finish当我的应用程序被破坏时的命令kill 9 编辑1 kill 9无法被捕获 谢谢
  • 并行读取 Flume spoolDir

    由于我不允许在产品服务器上设置 Flume 因此我必须下载日志 将它们放入 Flume spoolDir 中 并有一个接收器从通道中使用并写入 Cassandra 一切正常 但是 由于 spoolDir 中有很多日志文件 并且当前设置一次仅
  • JavaFX 2.0 FXML 子窗口

    经过多次搜索我发现了这个问题如何创建 javafx 2 0 应用程序 MDI https stackoverflow com questions 10915388 how to create a javafx 2 0 application
  • 有没有办法防止 Visual Studio 因特定方法中的异常而中断?

    我知道我可以根据异常的类型以及最终使用 异常 对话框捕获异常的事实来控制 Visual Studio 处理异常的方式 但是 我有一个在内部抛出 并捕获 一个库ArgumentOutOfRange当我调用特定方法时出现异常 抛出异常 并被库捕
  • 如何在 jQuery Mobile 中将标题设置为全屏模式?

    当我设置属性时data fullscreen true 对于标题 它工作正常 但当我收到一些事件时 我确实需要在运行时执行此操作 我试过这个 document ready function data role header attr dat
  • 如何从特定类获取特定链接?

    我想提取这个href从那个特定的class tr class even td a href italy serie a 2015 2016 Serie A 2015 2016 a td 这是我写的 Sub ExtractHrefClass
  • 为什么我不能导入 geopandas?

    我唯一的代码行是 import geopandas 它给了我错误 OSError Could not find libspatialindex c library file 以前有人遇到过这个吗 我的脚本运行得很好 直到出现此错误 请注意
  • 在 Python 中使用 XPath 和 LXML

    我有一个 python 脚本 用于解析 XML 并将某些感兴趣的元素导出到 csv 文件中 我现在尝试更改脚本以允许根据条件过滤 XML 文件 等效的 XPath 查询将是 DC Events Confirmation contains T
  • 跨域错误

    什么是跨域错误 当 Javascript 大多数时候 尝试访问不应该访问的内容 例如 如果您尝试读取另一个域的 cookie 那将不起作用 如果您尝试向另一个域或协议 HTTP gt HTTPS 发出 XMLHTTP 请求 则该请求将不起作
  • Firebase Messaging FCM 在可配置的时间间隔内分发

    当您使用 FCM 向给定应用程序的所有设备发送推送时 这可能会导致许多用户同时打开他们的应用程序 从而导致大量服务器轮询 从而导致负载峰值 有没有一种方便的方法可以在给定的时间间隔内分发消息以进行计划推送 最后 我们找到了一种可能的方法 通
  • 网络上的等角柱状图

    我计划为游戏的标记 图钉 构建在线地图 但我无法设置标记的正确纬度 原始地图是一个2048 2048px 的正方形 然后我得到了标记 数千个 地图坐标使用 0 到 100 之间的 x y 表示法设置 0 0 是top left角和100 1
  • ORDER BY 之后的 GROUP BY

    我需要去做GROUP BY after ORDER BY 我不明白为什么 MySQL 不支持这一点 这是我的代码 SELECT pages id contents id language ORDER BY FIND IN SET langu
  • 将向量 视为向量 而不进行复制 (C++0x)

    一个类包含一个std vector
  • 为什么 Promise `.then` 方法的回调是反模式

    我在 StackOverflow 上看到了答案 人们建议为 AngularJS 服务提供回调函数 app controller tokenCtrl function scope tokenService tokenService getTo
  • 按新年拆分日期行

    我有来自一家医院的包含许多变量的数据 以及每行的起始日期和截止日期 这告诉我们每行何时 有效 每行的有效期最长为一年 test data frame ID c 10 10 10 12 12 Disease c P P P D P Pass
  • Office 2007 文档中 Sharepoint 中的 ItemUpdate 后数据消失

    我有一个简单的事件处理程序 其中包含 ItemAdding 事件 该事件会更改 ItemUpdated 方法中所需的列值 上传 Word 2007 文档 docx pptx 或 xlsx 后 该列的值发生更改 但是当我保护该文档时 该列的值
  • 在 MySQL 中创建布尔列并将 false 作为默认值?

    我想在 MySQL 中创建一个表boolean默认值为的列false 但它默认接受 NULL 你必须指定0 意思是假 或1 意思是 true 作为默认值 这是一个例子 create table mytable mybool boolean
  • Java:线程“主”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:

    我是初学者 谁能帮我弄清楚我们在做什么 我正在尝试读取字符串并将字符串的每个字符存储在数组中 import java util Scanner public class CoreMainDigitExtractor static Scann