如何在java中连接int值?
我有以下价值观:如何在java中连接int值?,java,integer,concatenation,string-concatenation,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,因此当我将值相加时,我将丢失它。实际上 int result = a * 10000 + b * 1000 + c * 100 + d * 10 + e; String s = Integer.toString(result); 会有用的 注意:这仅在a大于0
int a=1;
int b=0;
int c=2;
int d=2;
int e=1;
如何连接这些值,以得到一个字符串10221
;
请注意,将a
乘以10000、b
乘以1000……和e
乘以1将不起作用,因为b=0
,因此当我将值相加时,我将丢失它。实际上
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的方法将得到您可能想要的结果。如果将b
乘以1000,则不会丢失任何值。有关数学知识,请参见下文
10000
0
200
20
1
=====
10221
如其他答案所示,最好将这些值保持为int。我建议将它们转换为字符串
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());
其他人指出,将
b
乘以1000不应该引起问题,但如果a为零,则最终会丢失它。(您将得到一个4位字符串,而不是5位。)
这里有一种替代(通用)方法-它假设所有值都在0-9范围内。(如果结果不是这样,您很可能应该输入一些代码来抛出异常,但为了简单起见,我将其保留在这里。)
最简单(但有点脏)的方法:
编辑:我不建议这样做,我同意乔恩的评论。添加这些额外的空字符串可能是简洁和清晰之间的最佳折衷方案。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();
}
人们对a==0时会发生什么感到烦恼。这很容易解决…前面有一个数字。:) 最大的缺点:它会创建两个字符串。如果这是一个大问题,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);
为了好玩。。。如何不去做强>
在这种情况下,并不是所有人都会真的想到这样做,但这说明了为什么授予某些对象成员访问权限很重要,否则API用户最终会解析对象的字符串表示形式,然后您将无法修改它,或者,如果您这样做,可能会破坏他们的代码。只是为了不要忘记
格式
方法
String s = String.format("%s%s%s%s%s", a, b, c, d, e);
(
%1.1s%1.1s%1.1s%1.1s%1.1s%1.1s
如果您只需要每个数字的第一位…已经讨论了最佳解决方案。
见鬼,你也可以这样做:
考虑到你总是在处理5位数字
(new java.util.Formatter().format("%d%d%d%d%d", a,b,c,d,e)).toString()
我并不是说这是最好的方式;只是增加了一种看待类似情况的替代方法。:) 不使用字符串怎么样 这应该适用于任意位数
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);
这对我有用
int i = 14;
int j = 26;
int k = Integer.valueOf(String.valueOf(i) + String.valueOf(j));
System.out.println(k);
假设从变量开始,结果是
1426
:
int i=12;
int j=12;
这将给出输出1212
:
System.out.print(i+""+j);
这将给出输出24
:
System.out.print(i+j);
难道你不能把数字串成字符串,连接起来,然后把字符串转换成整数值吗?使用Java 8和更高版本,你可以使用,一种非常干净和灵活的方式(特别是如果你有一个列表作为输入,而不是一组已知的变量a-e): 要获得以下结果: 1,0,2,2,1 编辑:正如LuCio所评论的,以下代码较短:
Stream.of(a, b, c, d, e).map(Object::toString).collect(Collectors.joining());
int number=0;
int[]tab={您的号码}。
对于(int i=0;i
注意:当您尝试在(string+int)上使用+运算符时,它会将int转换为字符串和
把他们干掉!
因此,您只需要将一个int转换为string
肮脏?什么?我不喜欢这个-我认为a+“”+b+“”+c+“”+d+“”+e
会更清晰,当然,虽然更冗长。看“a+b”太容易了我想这将是把整数加在一起。@Polygene:谢谢你指出这个问题-我以前没有发现过它…我想我会使用带有链式附录的StringBuffer。@Andrei:所有邪恶的根源又是什么?此外,一行字符串连接将被编译成StringBuilder。这只是在更复杂的情况下lex场景(通常涉及循环)中应该避免串联。他似乎想要一个字符串作为最终结果,因此解析是不必要的(如果真的需要,正确的解决方案是将数字相加,而不需要任何字符串的愚蠢行为)他想要一个字符串,这一点很好,但如果只是将数字相加,结果将是6,而不是10221…@Polygene润滑油:完全同意你的观点-忘记这个答案,Michael或Jon的答案是根据给出的信息得出的最佳解决方案:)@Polygene润滑油:。。。或者你的;-)<代码>StringBuilder
在这种情况下是一种过度杀伤力;普通的旧+
很好,可读性更好。谁能读?在这种情况下,我更喜欢StrugPuff/StrugBuudor,并同意乔恩Switts评论迈克尔斯的回答。考虑一下,把它添加到No.No如果我的第一个值等于0,它仍然有效。它将为您提供适当的值。你需要精确到5个字符长吗?谢谢大家的回答,我一直使用5个数字,但在很多情况下,它们以0开头,所以Michael's way就是wat way;-)这也适用于0。对于5位数字,它总是给出与Michael相同的结果;它唯一的优点(您不需要)是它可以使用可变位数。Varargs+foreach组合是最好的。它更干净,性能也更好。。。字符串连接很混乱,会导致大量不必要的字符串生成。现代虚拟机可能会缓解这一问题。。。不确定,但我认为这更干净。使用Horner方案:(((a*10+b)*10+c)*10+d)*10+e。当你把它们加起来时,为什么会失去b?更多关于Horner方案:这是
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);
int i = 14;
int j = 26;
int k = Integer.valueOf(String.valueOf(i) + String.valueOf(j));
System.out.println(k);
int i=12;
int j=12;
System.out.print(i+""+j);
System.out.print(i+j);
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);
}
}
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(","));
Stream.of(a, b, c, d, e).map(Object::toString).collect(Collectors.joining());
int number =0;
int[] tab = {your numbers}.
for(int i=0; i<tab.length; i++){
number*=10;
number+=tab[i];
}
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) ;
}