如何在Java中连接int值?
我有以下值:
int a=1; int b=0; int c=2; int d=2; int e=1;
我如何连接这些值,以便我结束了一个string是10221
; 请注意,将a
乘以10000, b
乘以1000 …..和e
乘以1将不起作用,因为b=0
,因此当我将值加起来时,我将失去它。
最简单的(但有点肮脏)的方式:
String result = "" + a + b + c + d + e
编辑:我不推荐这个,并同意乔恩的评论。 添加这些额外的空string可能是简短和清晰度之间的最佳折衷。
迈克尔Borgwardt的解决scheme是最好的5位数字,但如果你有不同数量的数字,你可以使用这样的事情:
public static String concatenateDigits(int... digits) { StringBuilder sb = new StringBuilder(digits.length); for (int digit : digits) { sb.append(digit); } return sb.toString(); }
这对我有效。
int i = 14; int j = 26; int k = Integer.valueOf(String.valueOf(i) + String.valueOf(j)); System.out.println(k);
原来是1426
其实,
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的方法会得到你可能想要的结果。
只是为了不要忘记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
如果你只想要每个数字的第一个数字…)
StringBuffer sb = new StringBuffer(); sb.append(a).append(b).append(c)...
保持值作为一个整数是首选的,因为其他答案显示你。
其他人指出,乘以1000不应该造成问题 – 但如果一个零,你最终会失去它。 (你会得到一个4位数的string,而不是5)
这是一个替代(通用)方法 – 假定所有的值都在0-9的范围内。 (如果事实certificate这是不正确的,那么你应该很可能会抛出一些代码来抛出exception,但为了简单起见,我已经把它留在这里了。)
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);
为了好玩…怎么不这样做😉
String s = Arrays.asList(a,b,c,d,e).toString().replaceAll("[\\[\\], ]", "");
这并不是说任何人都会这么想 – 但是这说明了为什么赋予某些对象成员访问权限是重要的,否则API用户最终会parsing对象的string表示,然后你就不能被能够修改它,或者冒险破坏他们的代码。
如果你乘以1000,你将不会失去任何值。 看下面的math。
10000 0 200 20 1 ===== 10221
假设你从variables开始:
int i=12; int j=12;
这将产生1212
:
System.out.print(i+""+j);
这将产生24
:
System.out.print(i+j);
我会build议将它们转换为string。
StringBuilder concatenated = new StringBuilder(); concatenated.append(a); concatenated.append(b); /// etc... concatenated.append(e);
然后转换回整数:
Integer.valueOf(concatenated.toString());
使用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());
人们对于== 0时会发生什么感到烦恼。简单的解决方法就是在它之前有一个数字。 🙂
int sum = 100000 + a*10000 + b*1000 + c*100 + d*10 + e; System.out.println(String.valueOf(sum).substring(1));
最大的缺点:它创build了两个string。 如果这是一个大问题,String.format可以帮助。
int sum = a*10000 + b*1000 + c*100 + d*10 + e; System.out.println(String.format("%05d", sum));
您可以使用
String x = a+"" +b +""+ c+""+d+""+ e; int result = Integer.parseInt(x);
已经讨论过最好的解决scheme 对于这一点,你也可以这样做:鉴于你总是处理5位数字,
(new java.util.Formatter().format("%d%d%d%d%d", a,b,c,d,e)).toString()
我不是说这是最好的方法; 只是添加一个替代方式来看待类似的情况。 🙂
如何不使用string…
这应该适用于任何数字的数字…
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);
注意到在这里的讨论,并沿着目前最广泛接受的答案的一般解决scheme,我可能会提出以下替代scheme:
public static String concatenateDigits(int... digits) { String result = ""; for (int digit : digits) { result += digit; } return result; }
我会推迟到我的第一个链接讨论这是否实际上是编译为相同的字节码作为原来的解决scheme,但我发现它更直观,更快的阅读和less臃肿坚持语言function比API调用。 但这是一个清楚的问题。
难道你只是让数字string,连接它们,并将string转换为整数值?
在Java 8之后,您可以使用StringJoiner ,这是一种非常干净而且更灵活的方法(特别是如果您有一个列表作为input,而不是已知的variables集合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
公开课join{
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); }
}