gpt4 book ai didi

java - 我如何允许它遍历每个元素以检查它是否相等?

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

所以我试图构建一个纸牌加密程序,但是当涉及到这种方法时我一直遇到问题。字符数组 a 表示用户输入的单词(将其转换为数组以使其更容易),字符数组 b 表示字母表,因此它有 25 个索引。我想做的是将字母表与其数字相匹配。它看起来很简单,但我遇到了困难,因为它不断抛出 ArrayIndexOutOfBoundsException 。我尝试过使用 for 循环、嵌套 for 循环和其他测试,但它不断抛出异常或仅输出意外结果,例如 [0, 0, 0, 0, 0]。我已经调试过它,似乎 b[i] 永远不等于 a[j] 所以 j 将始终为 0。

public static int[] converter(char[] a, char[] b){
int[] res = new int[a.length];
int i = 0;
int j = 0;
while(i < a.length){
if(b[i] == Character.toUpperCase(a[j])){ //Does not run through the first loop at all
res[j] = i + 1;
j = j + 1;
} else {
i = i + 1;
}
}
return res;
}

请不要链接类似的问题。它没有回答我的问题。

最佳答案

下面的代码是一个解决方案。我们希望 wordCharacterIndex 遍历单词以查看字符所在的位置。 characterIndex 迭代字符以与 wordCharacterIndex 中存在的单词字符进行比较。设置结果后,我们需要重置characterIndex,使其回到字符数组中的第一个字符与其他单词字符进行比较,如果我们不这样做,则该单词的后续字符需要位于a更高的字符索引,这不是我们想要的。命名变量的实际单词对于更好地理解您在代码中尝试执行的操作非常重要。当您迭代 b[i] 时,您正在比较 i < a.length,这使得有可能大于 b 的边界,从而导致 ArrayIndexOutOfBoundsException。我希望这可以帮助您更好地理解。

public static int[] converter(char[] word, char[] characters){
int[] result = new int[word.length];
int characterIndex = 0;
int wordCharacterIndex = 0;
while(wordCharacterIndex < word.length){
if(characters[characterIndex] == Character.toUpperCase(word[wordCharacterIndex])){
result[wordCharacterIndex] = characterIndex + 1;
wordCharacterIndex++;
characterIndex = 0;
} else {
characterIndex++;
}
}
return result;
}

关于java - 我如何允许它遍历每个元素以检查它是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59794591/

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