首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么"".leftPad (0 )和"".leftPad (1)产生相同的结果?

为什么"".leftPad (0 )和"".leftPad (1)产生相同的结果?
EN

Stack Overflow用户
提问于 2019-02-02 02:40:21
回答 1查看 48关注 0票数 1

给定以下代码:

代码语言:javascript
复制
  String        indentation = ""; 
  List < int >  indents = [ 0, 1, 2, 4, 6, 8 ];
  int           length = 0;

  for ( int i = 0; ( i <= 8 ); i++ )
    {
    if ( indents.contains ( i ) )
      {
      indentation = " ".padLeft(i);
      length = indentation.length;
      print ( "indent: $i  length: $length  indentation: '$indentation'");
      }
    }

我得到了以下结果:

代码语言:javascript
复制
  indent: 0  length: 1  indentation: ' '
  indent: 1  length: 1  indentation: ' '
  indent: 2  length: 2  indentation: '  '
  indent: 4  length: 4  indentation: '    '
  indent: 6  length: 6  indentation: '      '
  indent: 8  length: 8  indentation: '        '

我不认为"".leftPad (0 )的结果应该与"".leftPad (1)的结果相同。我可以使用测试缩进为零的变通方法。但是,我认为这是一个编译器错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-02 02:45:00

这就是你的问题:

代码语言:javascript
复制
indentation = " ".padLeft(i);

padLeft确保字符串开头至少有一定数量的空格,并且只有在必要时才会添加更多空格。因为您是在单个空格(" ")的字符串上调用它,所以padLeft(1)将看到在字符串的开头确实有一个空格,并将认为它的工作已经完成。因此,padLeft(0)padLeft(1)将完成相同数量的工作-根本不做任何工作。

" "更改为""会产生预期的结果:

代码语言:javascript
复制
indent: 0  length: 0  indentation: ''
indent: 1  length: 1  indentation: ' '
indent: 2  length: 2  indentation: '  '
indent: 4  length: 4  indentation: '    '
indent: 6  length: 6  indentation: '      '
indent: 8  length: 8  indentation: '        '
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54485390

复制
相关文章

相似问题

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