如何在java中连接int值?

Sha*_*mli 32 java integer concatenation string-concatenation

我有以下价值观:

int a=1; 
int b=0;
int c=2;
int d=2;
int e=1;
Run Code Online (Sandbox Code Playgroud)

我如何连接这些值,以便我最终得到一个字符串10221; 请注意,乘以a10000,乘以b1000 .....和e1将不起作用b=0 ,因此当我将值加起来时,我将失去它.

Mic*_*rdt 41

最简单(但有点脏)的方式:

String result = "" + a + b + c + d + e
Run Code Online (Sandbox Code Playgroud)

编辑:我不推荐这个并同意Jon的评论.添加那些额外的空字符串可能是简洁性和清晰度之间的最佳折衷.

  • 我不是这个的粉丝 - 我认为`a +""+ b +""+ c +""+ d +""+ e`会更清楚,我自己 - 当然,虽然更加啰嗦.IMO可以很容易地看到"a + b"并认为将整数加在一起. (14认同)
  • @Andrei:再次邪恶的根源是什么?此外,单行字符串连接将被编译为StringBuilder.它只在更复杂的情况下(通常涉及循环),应该避免连接. (4认同)
  • 我想我会使用带有链接附加的StringBuffer. (3认同)

pol*_*nts 31

Michael Borgwardt的解决方案是5位数的最佳解决方案,但如果您的数字位数可变,您可以使用以下内容:

public static String concatenateDigits(int... digits) {
   StringBuilder sb = new StringBuilder(digits.length);
   for (int digit : digits) {
     sb.append(digit);
   }
   return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

  • 这个更干净,性能也更好......字符串连接很麻烦,导致很多不必要的字符串生成.现代虚拟机可能会减轻......不确定,但我认为这更加清洁. (2认同)

Zee*_*han 27

这对我有用.

int i = 14;
int j = 26;
int k = Integer.valueOf(String.valueOf(i) + String.valueOf(j));
System.out.println(k);
Run Code Online (Sandbox Code Playgroud)

结果是 1426


use*_*421 12

只是为了不忘记这个 format方法

String s = String.format("%s%s%s%s%s", a, b, c, d, e);
Run Code Online (Sandbox Code Playgroud)

(%1.1s%1.1s%1.1s%1.1s%1.1s如果你只想要每个数字的第一个数字......)


T .*_*T . 11

其实,

int result = a * 10000 + b * 1000 + c * 100 + d * 10 + e;
String s = Integer.toString(result);
Run Code Online (Sandbox Code Playgroud)

工作的.

注意:这个时候才起作用a大于0和所有的b,c,de在[0,9].例如,如果b是15,Michael的方法将为您提供您可能想要的结果.


小智 7

完全不使用字符串怎么样?

这应该适用于任意数量的数字......

int[] nums = {1, 0, 2, 2, 1};

int retval = 0;

for (int digit : nums)
{
    retval *= 10;
    retval += digit;
}

System.out.println("Return value is: " + retval);
Run Code Online (Sandbox Code Playgroud)


Dan*_*ite 5

如果乘以b1000,则不会丢失任何值.请参阅下面的数学.

10000
    0
  200
   20
    1
=====
10221
Run Code Online (Sandbox Code Playgroud)


Bjö*_*örn 5

StringBuffer sb = new StringBuffer();
sb.append(a).append(b).append(c)...
Run Code Online (Sandbox Code Playgroud)

正如其他答案所示,将值保持为int是首选.

  • 在这种情况下,`StringBuilder`是一种过度杀伤力; 普通的旧`+`很好,更具可读性. (4认同)