gpt4 book ai didi

java - 为什么这段代码没有产生预期的结果?

转载 作者:行者123 更新时间:2023-11-29 04:48:06 25 4
gpt4 key购买 nike

以下java题题出自http://codingbat.com/prob/p132118 :

给定两个字符串,将它们附加在一起(称为“连接”)并返回结果。但是,如果串联创建一个双字符,则省略其中一个字符,因此“abc”和“cat”会生成“abcat”。即:

conCat("abc", "cat") → "abcat"
conCat("dog", "cat") → "dogcat"
conCat("abc", "") → "abc"

这是我制定的解决方案:

public String conCat(String a, String b) {

String result = a + b;
String r = "";
String f = "";

for(int i= 0; i < result.length(); i++)
{
f = Character.toString(result.charAt(i));
if(!( f.equals(result.charAt(i))) )
r += f;
}

return r;
}

我的问题是 - 导致我的代码将“ab”+“bc”连接到“abbc”而不是“abc”的逻辑缺陷在哪里?

最佳答案

您得到 a + b 的结果是因为您将字符串 f 与字符 result.charAt(i) 进行比较>。它们永远不相等,因为它们属于不同类型,所以 r += f; 无条件执行。

即使您纠正了这个问题,您的方法也不会奏效,因为您已经连接了字符串:您无法分辨连接之间的区别,例如conCat("ab", "bc")conCat("abbc", "")。您需要在实际连接字符串之前做一些事情。


如果满足以下所有条件,则需要删除一个角色:

  1. a 是非空的
  2. b 非空
  3. a 的最后一个字符等于b 的第一个字符。

在这种情况下,只需在连接之前砍掉 b 的第一个字符。否则,只需按原样连接字符串。

public String conCat(String a, String b) {
if (!a.isEmpty() && !b.isEmpty() && a.charAt(a.length() - 1) == b.charAt(0)) {
return a + b.substring(1);
} else {
return a + b;
}
}

关于java - 为什么这段代码没有产生预期的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36397787/

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