3 回答

TA貢獻(xiàn)1803條經(jīng)驗 獲得超6個贊
下面是代碼中令人反感的行:
Idx = IdxUpto;
您應(yīng)該遞增加一,以考慮到您還必須前進(jìn)超過寬度為 1 的逗號分隔符。所以使用這個:
Idx = IdxUpto + 1;
但請注意,您還有其他幾個問題。首先,您應(yīng)該遵循Java約定,避免以大寫字母開頭的變量名稱。此外,在這里使用循環(huán)可能比不使用指定條件的循環(huán)更有意義??紤]到所有這些因素,以下是腳本的工作版本: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貢獻(xiàn)1898條經(jīng)驗 獲得超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貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊
字符串的 api 表示如下:indexof
返回此字符串中第一次出現(xiàn)的指定子字符串的索引,從指定的索引開始。
當(dāng)您輸入 for 條件時,索引為 1(找到第一個逗號的索引位置)?,F(xiàn)在,您要做的是將Idx設(shè)置為此索引,如下所示:
Idx = IdxUpto;
現(xiàn)在,由于api的索引開始從該索引中搜索逗號,它一直說我在索引1處找到,并且您繼續(xù)嘗試在索引1處搜索逗號。要解決此問題,請嘗試添加如下方法:
Idx = IdxUpto + 1;
需要注意的幾件事:
一個。使用駝峰大小寫變量命名約定。
(二)您正在追加到字符串生成器,如果您需要按預(yù)期的所需輸出,則語句應(yīng)更改為:println
System.out.println(Inp.substring(Idx, IdxUpto));//mutate Idx assignment after this print statement.
添加回答
舉報