gpt4 book ai didi

java - Java中字符串定界程序中的差一错误

转载 作者:行者123 更新时间:2023-11-29 02:59:07 25 4
gpt4 key购买 nike

以下程序的目标是通过分隔符 "/" """:" 来分隔源字符串。预期输出是 20 03 2016 17 30 但它只产生 20 03 2016 17,省略了最后一个元素。也许是一些差一错误?

public static void main(String[] args) {
String source = "20/03/2016:17:30";
String sep = "/:";
String[] result = new String[5];
String str = "";
int index = 0;

for (int sourcePos = 0; sourcePos < source.length(); sourcePos++) {
int compt = 0;

for (int sepPos = 0; sepPos < sep.length(); sepPos++) {
if (source.charAt(sourcePos) == sep.charAt(sepPos)) compt++;
}

if (compt > 0) {
result[index] = str;
System.out.print(" " + result[index]);

if (index < result.length)
index++;
else
break;

str = "";
} else {
str = str + source.charAt(sourcePos);
}
}
}

最佳答案

您可以简单地使用 regex :

String[] result = source.split("/|:");  

至于你的代码,你差一个的原因是主要的for在您到达 if (compt > 0) 之前循环终止最后一次。换句话说,sourcePos < source.length()false , 在你可以添加最后一个 str 之前.

你可以这样:

for (int sourcePos = 0; sourcePos < source.length() ; sourcePos++) {
boolean compt = false;

for (int sepPos = 0; sepPos < sep.length(); sepPos++) {
if (source.charAt(sourcePos) == sep.charAt(sepPos)) {
compt = true;
break;
}
}

if (compt) {
result[index] = str;
index++;
str = "";
}

else if(sourcePos == source.length()-1) {
result[index] = str + source.charAt(sourcePos);
}

else {
str = str + source.charAt(sourcePos);
}
}

关于java - Java中字符串定界程序中的差一错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36142549/

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