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”。
添加回答
举报