我正在尝试打印下面字符串中的逗号分隔值
A,B,C,D,E
这是我的代码
String Inp = "A,B,C,D,E";
StringBuilder op = new StringBuilder();
int Idx = 0;
int IdxUpto = 0;
for(;;){
IdxUpto = Inp.indexOf(",", Idx);
if(IdxUpto==-1){
System.out.println("There is no more commas in String");
op.append(Inp.substring(Idx, Inp.length()));
System.out.println(op);
break;
}
op.append(Inp.substring(Idx, IdxUpto));
Idx = IdxUpto;
System.out.println(op);
}
For 循环在第一次提取后没有停止,任何人都可以帮助我做错了什么吗?
编辑:
预期输出
A
B
C
D
E
谢谢
最佳答案
这是代码中的违规行:
Idx = IdxUpto;
您应该递增加一,以考虑到您还必须超过宽度为一的逗号分隔符。所以使用这个:
Idx = IdxUpto + 1;
但请注意,您还有其他几个问题。一方面,您应该遵循 Java 约定并避免以大写字母开头变量名称。此外,在这里使用 while 循环可能比不指定条件的 for 循环更有意义。考虑到所有这些,这是脚本的工作版本:
String input = "A,B,C,D,E";
StringBuilder op = new StringBuilder();
int idx = 0;
int idxUpto = 0;
do {
idxUpto = input.indexOf(",", idx);
if (idxUpto == -1) {
String term = input.substring(idx, input.length());
op.append(term);
System.out.println(term);
System.out.println("There is no more commas in String");
break;
}
String term = input.substring(idx, idxUpto);
op.append(term);
idx = idxUpto+1;
System.out.println(term);
} while(true);
A
B
C
D
E
There is no more commas in String
关于java - 从字符串中提取逗号分隔的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55550670/