3 回答

TA贡献1803条经验 获得超6个赞
下面是代码中令人反感的行:
Idx = IdxUpto;
您应该递增加一,以考虑到您还必须前进超过宽度为 1 的逗号分隔符。所以使用这个:
Idx = IdxUpto + 1;
但请注意,您还有其他几个问题。首先,您应该遵循Java约定,避免以大写字母开头的变量名称。此外,在这里使用循环可能比不使用指定条件的循环更有意义。考虑到所有这些因素,以下是脚本的工作版本:whilefor
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

TA贡献1898条经验 获得超8个赞
您可以简单地使用如下方法:String.split()
public class StringSplit {
public static void main(String[] args) {
String input = "A,B,C,D,E";
String[] array = input.split(",");
for (String letter : array) {
System.out.println(letter);
}
}
}
输出:
A
B
C
D
E

TA贡献1802条经验 获得超5个赞
字符串的 api 表示如下:indexof
返回此字符串中第一次出现的指定子字符串的索引,从指定的索引开始。
当您输入 for 条件时,索引为 1(找到第一个逗号的索引位置)。现在,您要做的是将Idx设置为此索引,如下所示:
Idx = IdxUpto;
现在,由于api的索引开始从该索引中搜索逗号,它一直说我在索引1处找到,并且您继续尝试在索引1处搜索逗号。要解决此问题,请尝试添加如下方法:
Idx = IdxUpto + 1;
需要注意的几件事:
一个。使用驼峰大小写变量命名约定。
(二)您正在追加到字符串生成器,如果您需要按预期的所需输出,则语句应更改为:println
System.out.println(Inp.substring(Idx, IdxUpto));//mutate Idx assignment after this print statement.
添加回答
举报