首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要这么做?爪哇在转吗?

为什么要这么做?爪哇在转吗?
EN

Stack Overflow用户
提问于 2014-10-04 18:08:13
回答 2查看 103关注 0票数 1
代码语言:javascript
复制
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-2len/2+1)。

Java总是四舍五入吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-04 18:10:51

您正在整数上下文中进行除法。除以两个int时,只保留结果的整数部分,其余部分将被丢弃。例如,29/10将导致2

票数 5
EN

Stack Overflow用户

发布于 2014-10-04 18:12:43

我的问题是-为什么从中间下降一个点(len/2-1),然后上升两个点是中心?它没有相反的工作方式(len/2-2len/2+1)。

这是因为substring()获取的范围包括开始索引,但不包括结束索引。引用文档

子字符串从指定的beginIndex开始,扩展到索引endIndex - 1处的字符。

因此,实际范围是[len/2-1; len/2+1],并且围绕中心字符len/2是对称的。

(是的,当你把一个奇数除以二时,结果会四舍五入为零。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26195658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档