gpt4 book ai didi

Java for循环索引: "j" isn't starting at the begining of my char Array after one loop of my index : "i"

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

我对这段代码有一个问题,一开始,当它发现第一次出现时,它工作得很好,但是当它发现第二次出现时,它说字符串中没有相似的字符,我认为这是因为在第二个字母处“p”,他没有意识到在数组的开头还有另一个“p”。

请帮忙解决这个问题?!

谢谢。

这是我的代码

public class DuplicateEncoder {
static String encode(String word){
word = word.toLowerCase();
char[] c = word.toCharArray();
//")"
char close = 41;
//"("
char open = 40;
for (int i = 0; i < c.length; i++) {
int count = 0;
for (int j = 0; j < c.length; j++) {
if(c[i] == c[j]) {
count++;
}
}
if(count > 1){
c[i] = close;
}
else if (count == 1){
c[i] = open;
}
}
String string = new String(c);
return string;
}
}

这是测试

import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;


public class DuplicateEncoderTest {
@Test
public void test() {
assertEquals(")()())()(()()(",
DuplicateEncoder.encode("Prespecialized"));
assertEquals("))))())))",DuplicateEncoder.encode(" ()( "));
}
}

这是我的错误结果

expected:<)()([))()(()()](> but was:<)()([()()(((((](>

最佳答案

问题在于,当您处于循环中时,您正在更改 char 数组 c 的值。

将代码更改为以下内容将解决您的问题:

static String encode(String word){
word = word.toLowerCase();
char[] c = word.toCharArray();
char[] d = word.toCharArray();
//")"
char close = 41;
//"("
char open = 40;
for (int i = 0; i < c.length; i++) {
int count = 0;
for (int j = 0; j < c.length; j++) {
if(c[i] == c[j]) {
count++;
}
}
if(count > 1){
d[i] = close;
}
else if (count == 1){
d[i] = open;
}
}
String string = new String(d);
return string;
}

关于Java for循环索引: "j" isn't starting at the begining of my char Array after one loop of my index : "i",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58248813/

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