gpt4 book ai didi

java - 即使我的 for 循环计数器通过减去 1 来调整长度,我仍然得到 "java.lang.StringIndexOutOfBoundsException"

转载 作者:行者123 更新时间:2023-12-02 09:43:12 25 4
gpt4 key购买 nike

所以我的主要目标是创建一个可以解密凯撒密码的程序。我已经设置好所有内容,以便在一个数组中设置常规字母表,然后在解码器数组中设置一个解码器数组,在该数组中我根据用户输入的移位/键移动了字母表。 (即,如果用户输入移位 6,则常规字母表数组开始 a、b、c...,然后解码器数组开始 g、h、i...)。

我目前一直在检查加密消息(用户输入的)并通过将其与解码器数组匹配来逐个解码每个字母。即使在我设置的 for 循环中,我已经从消息长度中减去 1 以补偿它从 0 开始,它仍然给我一个索引越界错误。

该错误也仅发生在最后一个字符处(这就是 35。我有一个 35 个字符的字符串,我正在使用它来测试)。但是,当我尝试打印解码的消息直到出现错误时,我只是得到空值(我将每个解码的字符存储在数组中,并打印 for 循环运行时存储的每个字符)。

这是我目前遇到的代码片段:

//Decoding message by looping through each letter in String message
for (int x = 0; x < (message.length() - 1); x ++) //Gets next letter in message
{
for (int y = 0; y < (decodedArray.length - 1); x++) //Goes through decodedArray array
{
if (String.valueOf(message.charAt(x)) == (decodedArray[y])) //Comparing character to each position in decodedArray
{
decodedMessage[x] = alphabetArray[y];
}
System.out.print(decodedMessage[x]); //Testing only. Prints each character stored in array but only printing nulls.
}
}

我还没有添加任何空格检查,因为我目前陷入了这个错误,但如果你们中的任何人可以添加它,那将不胜感激。我不确定将字符与空格进行比较是否有效。

最佳答案

根据问题中的当前代码,我可以说您的代码有两个问题,

  1. 如果需要比较char,可以直接使用to ==运算符,无需使用String.ValueOf()将其转换为字符串.

  2. 您在第二个循环中递增 x,而需要递增 y

关于java - 即使我的 for 循环计数器通过减去 1 来调整长度,我仍然得到 "java.lang.StringIndexOutOfBoundsException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60388623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com