42

我有以下价值观:

int a=1; 
int b=0;
int c=2;
int d=2;
int e=1;

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

4

22 回答 22

50

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

String result = "" + a + b + c + d + e

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

于 2010-04-20T11:46:30.363 回答
36

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();
}
于 2010-04-20T11:47:10.110 回答
34

这对我有用。

int i = 14;
int j = 26;
int k = Integer.valueOf(String.valueOf(i) + String.valueOf(j));
System.out.println(k);

结果是1426

于 2012-11-07T11:35:02.007 回答
16

只是为了不要忘记 format方法

String s = String.format("%s%s%s%s%s", a, b, c, d, e);

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

于 2010-04-20T14:31:14.580 回答
12

实际上,

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

工作。

注意:这仅在a大于 0 并且所有b, c,de都在 [0, 9] 中时才有效。例如,如果b是 15,Michael 的方法将为您提供您可能想要的结果。

于 2010-04-20T11:43:54.917 回答
5

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

10000
    0
  200
   20
    1
=====
10221
于 2010-04-20T11:44:09.447 回答
5
StringBuffer sb = new StringBuffer();
sb.append(a).append(b).append(c)...

正如其他答案向您展示的那样,将值保留为 int 是首选。

于 2010-04-20T11:44:19.607 回答
4

根本不使用字符串怎么样...

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

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);
于 2011-06-07T22:01:36.080 回答
4

为了好玩......如何这样做;-)

String s = Arrays.asList(a,b,c,d,e).toString().replaceAll("[\\[\\], ]", "");

并不是说在这种情况下任何人都会真正考虑这样做 - 但这说明了为什么授予对某些对象成员的访问权限很重要,否则 API 用户最终会解析对象的字符串表示,然后你就会陷入困境能够修改它,或者如果你这样做,就有可能破坏他们的代码。

于 2010-04-20T13:06:46.287 回答
4

其他人指出,乘以b1000 应该不会导致问题 - 但如果a为零,你最终会失去它。(你会得到一个 4 位数的字符串而不是 5。)

这是另一种(通用)方法 - 它假设所有值都在 0-9 范围内。(如果结果不是真的,你很可能应该输入一些代码来抛出异常,但为了简单起见,我把它放在这里了。)

public static String concatenateDigits(int... digits)
{
    char[] chars = new char[digits.length];
    for (int i = 0; i < digits.length; i++)
    {
        chars[i] = (char)(digits[i] + '0');
    }
    return new String(chars);
}

在这种情况下,您可以使用以下方式调用它:

String result = concatenateDigits(a, b, c, d, e);
于 2010-04-20T11:46:24.043 回答
3

使用 Java 8 及更高版本,您可以使用StringJoiner,这是一种非常干净且更灵活的方式(特别是如果您有一个列表作为输入而不是已知的一组变量 ae):

int a = 1;
int b = 0;
int c = 2;
int d = 2;
int e = 1;
List<Integer> values = Arrays.asList(a, b, c, d, e);
String result = values.stream().map(i -> i.toString()).collect(Collectors.joining());
System.out.println(result);

如果您需要分隔符,请使用:

String result = values.stream().map(i -> i.toString()).collect(Collectors.joining(","));

要得到以下结果:

1,0,2,2,1

编辑:正如 LuCio 评论的,以下代码更短:

Stream.of(a, b, c, d, e).map(Object::toString).collect(Collectors.joining());
于 2017-03-26T10:17:25.293 回答
2
int number =0;
int[] tab = {your numbers}.

for(int i=0; i<tab.length; i++){
    number*=10;
    number+=tab[i];
}

你有你的级联号码。

于 2019-12-03T11:18:54.627 回答
1

您可以使用

String x = a+"" +b +""+ c+""+d+""+ e;
int result = Integer.parseInt(x);
于 2010-04-20T12:19:49.070 回答
1

Assuming you start with variables:

int i=12;
int j=12;

This will give output 1212:

System.out.print(i+""+j); 

And this will give output 24:

System.out.print(i+j);
于 2013-04-10T15:59:50.653 回答
1

我建议将它们转换为字符串。

StringBuilder concatenated = new StringBuilder();
concatenated.append(a);
concatenated.append(b);
/// etc...
concatenated.append(e);

然后转换回整数:

Integer.valueOf(concatenated.toString());
于 2010-04-20T11:45:25.740 回答
1

使用 StringBuilder

StringBuilder sb = new StringBuilder(String.valueOf(a));
sb.append(String.valueOf(b));
sb.append(String.valueOf(c));
sb.append(String.valueOf(d));
sb.append(String.valueOf(e));
System.out.print(sb.toString());
于 2010-04-20T11:46:16.587 回答
1

人们担心当 a == 0 时会发生什么。很容易解决这个问题……前面有一个数字。:)

int sum = 100000 + a*10000 + b*1000 + c*100 + d*10 + e;
System.out.println(String.valueOf(sum).substring(1));

最大的缺点:它创建了两个字符串。如果这很重要,String.format 可能会有所帮助。

int sum = a*10000 + b*1000 + c*100 + d*10 + e;
System.out.println(String.format("%05d", sum));
于 2010-04-20T12:10:48.347 回答
0

最佳解决方案已经讨论过了。对于它,你也可以这样做:鉴于你总是处理 5 位数字,

(new java.util.Formatter().format("%d%d%d%d%d", a,b,c,d,e)).toString()

我并不是说这是最好的方法;只是添加另一种方法来查看类似情况。:)

于 2010-04-20T15:18:39.970 回答
0

注意:当您尝试在 (string + int) 上使用 + 运算符时,它会将 int 转换为字符串并将它们连接起来!所以你只需要将一个 int 转换为 string

public class scratch {

public static void main(String[] args){

    int a=1;
    int b=0;
    int c=2;
    int d=2;
    int e=1;
    System.out.println( String.valueOf(a)+b+c+d+e) ;
}
于 2020-12-21T06:55:12.917 回答
0
//Here is the simplest way 
public class ConcatInteger{
    public static void main(String[] args) {
      
      int [] list1={1,2,3};
      int [] list2={1,9,6};
      
      String stNum1="";
      String stNum2="";
   
      for(int i=0 ; i<3 ;i++){
        stNum1=stNum1+Integer.toString(list2[i]);   //Concat done with string  
      }
      
      for(int i=0 ; i<3 ;i++){
        stNum2=stNum2+Integer.toString(list1[i]);
      }
      
      int sum= Integer.parseInt(stNum1)+Integer.parseInt(stNum2); // Converting string to int
      
         System.out.println(sum);  
    } 
}
于 2021-08-06T19:23:02.680 回答
-1

Couldn't you just make the numbers strings, concatenate them, and convert the strings to an integer value?

于 2015-12-26T15:03:22.110 回答
-4
public class joining {

    public static void main(String[] args) {
        int a=1; 
        int b=0;
        int c=2;
        int d=2;
        int e=1;

        String j = Long.toString(a);
        String k = Long.toString(b);
        String l = Long.toString(c);
        String m = Long.toString(d);
        String n = Long.toString(e);

       /* String s1=Long.toString(a);    // converting long to String
        String s2=Long.toString(b);
        String s3=s2+s1;
        long c=Long.valueOf(s3).longValue();    // converting String to long
        */

        System.out.println(j+k+l+m+n);  
    }
}
于 2015-10-02T06:23:34.790 回答