gpt4 book ai didi

java - 编码Bat sum数字

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

对于这个问题:http://codingbat.com/prob/p121193

我写了这段代码:

public int sumNumbers(String str) {
int y = 0;
int z = 0;
for (int f4 = 0; f4 < str.length(); f4++) {
if (Character.isDigit(str.charAt(f4))) {
for (int f5 = f4; f5 < str.length(); f5++) {
if (!Character.isDigit(str.charAt(f5))) {
z = (Integer.parseInt(str.substring(f4, f5)));
y = y + z;
f4 = f5 - 1;
break;
}
}
}
}
return y;
}

这些是问题(它们不是代码,但它拒绝接受我的问题):

sumNumbers("abc123xyz") Expected: 123; Returned: 123
sumNumbers("aa11b33") Expected: 44; Returned: 11
sumNumbers("7 11") Expected: 18; Returned: 7
sumNumbers("Chocolate") Expected: 0; Returned: 0
sumNumbers("5hoco1a1e") Expected: 7; Returned: 7
sumNumbers("5$$1;;1!!") Expected: 7; Returned: 7
sumNumbers("a1234bb11") Expected: 1245; Returned: 1234
sumNumbers("") Expected: 0; Returned: 0
sumNumbers("a22bbb3") Expected: 25; Returned: 22

总而言之,由于某种原因,我的代码无法处理多于一位的数字,我不知道为什么。我断断续续地研究这个问题有一段时间了,虽然我拒绝直接查找答案,但我确实需要一些帮助。我正在读高中 AP Comp。科学。

最佳答案

你的代码没有任何问题。唯一的问题是您没有正确处理边界条件。您正在检查是否if (!Character.isDigit(str.charAt(f5)))。现在,如果你内心已经疲惫不堪,但没有遇到这种情况怎么办?

例如,如果测试用例对您来说失败,则最后一个或最后几个字符是整数。

看这个,aa11b33。现在,33 永远不会添加到您的总和中,即 y,因为您的 if 条件永远不会被执行,并且内部 while 会耗尽。

您需要处理边界条件以识别这些有效输入,然后将它们添加到总和中。

以下是更正后的代码片段供您引用:

public int sumNumbers(String str) {
int y = 0, z = 0, f4, f5 = 0;
for (f4 = 0; f4 < str.length(); f4++) {
if (Character.isDigit(str.charAt(f4))) {
for (f5 = f4; f5 < str.length(); f5++) {
if (!Character.isDigit(str.charAt(f5))) {
z = (Integer.parseInt(str.substring(f4, f5)));
y = y + z;
f4 = f5;
break;
}
}
/* Handle Boundary Conditions */
if (f4 != f5) {
z = (Integer.parseInt(str.substring(f4, str.length())));
y = y + z;
break;
}
}
}
return y;
}

关于java - 编码Bat sum数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527471/

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