如何在java中连接int值?

时间:2010-04-20 11:42:08

标签: java integer concatenation string-concatenation

我有以下数值:

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

如何连接这些值,以便最终得到一个10221的字符串; 请注意,将a乘以10000,b乘以1000 ..... e乘以1 b=0将无法正常工作,因此当我添加时我会丢失它值得。

22 个答案:

答案 0 :(得分:38)

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

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

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

答案 1 :(得分:30)

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();
}

答案 2 :(得分:25)

这对我有用。

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

原来是1426

答案 3 :(得分:11)

实际上,

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

工作。

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

答案 4 :(得分:9)

不要忘记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如果你只想要每个数字的第一个数字......)

答案 5 :(得分:5)

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

10000
    0
  200
   20
    1
=====
10221

答案 6 :(得分:5)

StringBuffer sb = new StringBuffer();
sb.append(a).append(b).append(c)...

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

答案 7 :(得分:4)

其他人指出,将b乘以1000不会导致问题 - 但如果 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);

答案 8 :(得分:3)

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

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

在这种情况下,并不是所有人都会想到这样做 - 但这说明了为什么提供访问某些对象成员的重要性,否则API用户最终会解析对象的字符串表示,然后你就是卡住了无法修改它,或冒着破坏他们的代码的风险。

答案 9 :(得分:3)

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

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());

答案 10 :(得分: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());

答案 11 :(得分:1)

当人们对= = 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));

答案 12 :(得分:1)

您可以使用

String x = a+"" +b +""+ c+""+d+""+ e;
int result = Integer.parseInt(x);

答案 13 :(得分:1)

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

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

然后转换回整数:

Integer.valueOf(concatenated.toString());

答案 14 :(得分:1)

根本不使用字符串...

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

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);

答案 15 :(得分:1)

假设你从变量开始:

int i=12;
int j=12;

这将输出1212

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

这将输出24

System.out.print(i+j);

答案 16 :(得分:0)

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

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

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

答案 17 :(得分:0)

int number = 0; int []标签= {您的号码}。

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

}

您有自己的连接号码。

答案 18 :(得分: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) ;
}

答案 19 :(得分: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);  
    } 
}

答案 20 :(得分:-1)

难道你不能只创建数字字符串,连接它们,并将字符串转换为整数值吗?

答案 21 :(得分:-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);  
    }
}