我有以下数值:
int a=1;
int b=0;
int c=2;
int d=2;
int e=1;
如何连接这些值,以便最终得到一个10221
的字符串;
请注意,将a
乘以10000,b
乘以1000 ..... e
乘以1 b=0
将无法正常工作,因此当我添加时我会丢失它值得。
答案 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且b
,c
,d
和e
全部都在[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);
}
}