public class StringTest{
public static void main(String[] args){
String a = "Aphex";
int len = a.length();
int lenA = len/2-1;
int lenB = len/2+2;
if(len%2==0){
System.out.println("Number of letters has to be odd");
}else{
System.out.println(a.substring(lenA, lenB)) }}}
Output:
phe这个简单的代码可以接受任何带有奇数字母的字符串,并找到三个中间的字符串。我的问题是-为什么从中间往下一个点是中心(len/2-1),然后是两个点)?它没有相反的工作方式(len/2-2到len/2+1)。
Java总是四舍五入吗?
发布于 2014-10-04 18:10:51
您正在整数上下文中进行除法。除以两个int时,只保留结果的整数部分,其余部分将被丢弃。例如,29/10将导致2。
发布于 2014-10-04 18:12:43
我的问题是-为什么从中间下降一个点(
len/2-1),然后上升两个点是中心?它没有相反的工作方式(len/2-2到len/2+1)。
这是因为substring()获取的范围包括开始索引,但不包括结束索引。引用文档
子字符串从指定的
beginIndex开始,扩展到索引endIndex - 1处的字符。
因此,实际范围是[len/2-1; len/2+1],并且围绕中心字符len/2是对称的。
(是的,当你把一个奇数除以二时,结果会四舍五入为零。)
https://stackoverflow.com/questions/26195658
复制相似问题