3 回答

TA貢獻1803條經驗 獲得超6個贊
檢查substring(int beginIndex)和substring(int beginIndex, int endIndex):
String high = highLowString.substring(0, highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR));
String low = highLowString.substring(highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR) + 1);

TA貢獻1858條經驗 獲得超8個贊
該substring方法被重載,這意味著它可能被稱為傳遞不同數量的int參數/參數。如果你只用一個來調用它,你會得到一個子字符串,它從傳遞的索引開始,到String. 如果您使用兩個參數調用它,您將收到從傳遞的較低索引開始并在第二個索引傳遞之前結束的子字符串。
看這個例子:
public class DominoHighLowImpl_Laursen {
public static final String HIGH_LOW_STRING_SEPARATOR = ":";
private String highLowString;
public DominoHighLowImpl_Laursen(String highLowString) {
this.highLowString = highLowString;
}
public String getLow() {
return highLowString.substring(0, highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR));
}
public String getHigh() {
return highLowString.substring(highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR) + 1);
}
public static void main(String[] args) {
DominoHighLowImpl_Laursen domino = new DominoHighLowImpl_Laursen("1020304:4456778");
System.out.println("High:\t" + domino.getHigh());
System.out.println("Low:\t" + domino.getLow());
}
}

TA貢獻1770條經驗 獲得超3個贊
String substr = highLowString.substring(highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR) + 1);
正在工作,因為indexOf(HIGH_LOW_STRING_SEPARATOR)
是 1。所以substring(2)
將包含“2”。
但是當你這樣做時
String substr = highLowString.substring(highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR) - 1)
該值變為indexOf(0)
存儲整個字符串“6:2”。
嘗試
String substr = highLowString.substring(0,highLowString.indexOf(HIGH_LOW_STRING_SEPARATOR));
得到“6”。
添加回答
舉報