【问题标题】:Performing addition when creating a string创建字符串时执行加法
【发布时间】:2018-06-12 22:16:25
【问题描述】:

我正在创建许多对象,其中包含从数组中读取的详细信息。它们的其中一个实例变量将有一个标准格式,我希望它部分地是一个升序数字。具体来说,我正在创建一个 Location 对象的负载,我希望这些对象具有“Flat 1”、“Flat 2”等的描述。

我想知道在为String 赋值时是否有一种简单的方法来执行加法。剥离到相关部分,我的代码是:

int size = locations.size();
Location l;
for (int i=0; i<size; i++){
    l = new Location ("Flat " + i + 1); //LINE A
    addLocation(l);
}
//several bits of code have been removed and swapped around here, I realise 
//that that snippet doesn't really perform anything useful

但是,Java 将 LINE A 中的两个“+”符号解释为连接,这意味着我得到“Flat 01”、“Flat 11”、“Flat 21”等。

显然我可以改变循环的工作方式,但我很好奇是否可以在 myString = value + 2 类型语句中执行计算?

【问题讨论】:

  • 您是否尝试过在i + 1 周围使用括号?请注意,表达式将从左到右进行计算。

标签: java string concatenation


【解决方案1】:

字符串连接是左关联的,因此您只需将所需的值括在括号中以确保首先计算它:

l = new Location ("Flat " + i + 1);

有效:

l = new Location (("Flat " + i) + 1);

所以i首先附加到字符串"Flat ";然后将1 附加到它上面。

应该是:

l = new Location ("Flat " + (i + 1));

【讨论】:

    【解决方案2】:

    使用括号:

    l = new Location ("Flat " + (i + 1)); //LINE A
    

    【讨论】:

      猜你喜欢
      • 2019-08-17
      • 2017-10-26
      • 1970-01-01
      • 2015-10-14
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      相关资源
      最近更新 更多