java中如何连接int值?
我有以下值:
int a=1;
int b=0;
int c=2;
int d=2;
int e=1;
如何连接这些值,以便最终得到一个 10221
的字符串; 请注意,将 a
乘以 10000、b
乘以 1000......以及 e
乘以 1 将不起作用,因为 b= 0
,因此当我将这些值相加时我会丢失它。
I have the following values:
int a=1;
int b=0;
int c=2;
int d=2;
int e=1;
How do i concatenate these values so that i end up with a String that is 10221
;
please note that multiplying a
by 10000, b
by 1000.....and e
by 1 will not working since b=0
and therefore i will lose it when i add the values up.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(22)
最简单(但有点肮脏)的方法:
编辑:我不推荐这个并同意乔恩的评论。添加这些额外的空字符串可能是简短和清晰度之间的最佳折衷方案。
The easiest (but somewhat dirty) way:
Edit: I don't recommend this and agree with Jon's comment. Adding those extra empty strings is probably the best compromise between shortness and clarity.
这对我有用。
结果是
1426
This worked for me.
It turned out as
1426
Michael Borgwardt 的解决方案最适合 5 位数字,但如果您的数字位数可变,则可以使用如下所示的解决方案:
Michael Borgwardt's solution is the best for 5 digits, but if you have variable number of digits, you can use something like this:
只是不要忘记
format
方法(
%1.1s%1.1s%1.1s%1.1s%1.1s
如果您只想要每个数字的第一个数字...... )just to not forget the
format
method(
%1.1s%1.1s%1.1s%1.1s%1.1s
if you only want the first digit of each number...)事实上,
会起作用。
注意:仅当
a
大于 0 且b
、c
、d
和 < code>e 位于 [0, 9] 中。例如,如果b
为 15,Michael 的方法将为您提供您可能想要的结果。Actually,
will work.
Note: this will only work when
a
is greater than 0 and all ofb
,c
,d
ande
are in [0, 9]. For example, ifb
is 15, Michael's method will get you the result you probably want.根本不使用字符串怎么样...
这应该适用于任意数量的数字...
How about not using strings at all...
This should work for any number of digits...
正如其他答案所示,您最好将值保留为 int 。
Keeping the values as an int is preferred thou, as the other answers show you.
如果将
b
乘以 1000,您将不会丢失任何值。请参阅下面的数学。If you multiply
b
by 1000, you will not lose any of the values. See below for the math.其他人指出,将
b
乘以 1000 不会产生问题 - 但如果 a 为零,您最终会丢失它。 (您将得到一个 4 位数字字符串,而不是 5 位数字。)这是另一种(通用)方法 - 假设所有值都在 0-9 范围内。 (如果事实证明情况并非如此,您很可能应该输入一些代码来抛出异常,但为了简单起见,我将其留在这里。)
在这种情况下,您可以使用以下方式调用它:
Others have pointed out that multiplying
b
by 1000 shouldn't cause a problem - but if a were zero, you'd end up losing it. (You'd get a 4 digit string instead of 5.)Here's an alternative (general purpose) approach - which assumes that all the values are in the range 0-9. (You should quite possibly put in some code to throw an exception if that turns out not to be true, but I've left it out here for simplicity.)
In this case you'd call it with:
为了好玩...如何不去做;-)
在这种情况下,并不是有人真的会考虑这样做 - 但是这说明了为什么授予对某些对象成员的访问权限很重要,否则 API 用户最终会解析对象的字符串表示形式,然后您将无法修改它,或者如果您这样做,则可能会破坏他们的代码。
For fun... how NOT to do it ;-)
Not that anyone would really think of doing it this way in this case - but this illustrates why it's important to give access to certain object members, otherwise API users end up parsing the string representation of your object, and then you're stuck not being able to modify it, or risk breaking their code if you do.
使用 Java 8 及更高版本,您可以使用 StringJoiner< /a>,一种非常干净且更灵活的方式(特别是如果您有一个列表作为输入而不是已知的一组变量 ae):
如果您需要分隔符,请使用:
要获得以下结果:
编辑:正如 LuCio 所评论的,以下代码更短:
Using Java 8 and higher, you can use the StringJoiner, a very clean and more flexible way (especially if you have a list as input instead of known set of variables a-e):
If you need a separator use:
To get the following result:
Edit: as LuCio commented, the following code is shorter:
你有你的串联号码。
And you have your concatenated number.
我建议将它们转换为字符串。
然后转换回整数:
I would suggest converting them to Strings.
Then converting back to an Integer:
使用字符串生成器
Use StringBuilder
人们担心当 a == 0 时会发生什么。很容易解决这个问题......在它前面加一个数字。 :)
最大的缺点:它创建了两个字符串。如果这是一个大问题,String.format 可以提供帮助。
People were fretting over what happens when a == 0. Easy fix for that...have a digit before it. :)
Biggest drawback: it creates two strings. If that's a big deal, String.format could help.
你可以使用
You can Use
假设您从变量开始:
这将给出输出
1212
:这将给出输出
24
:Assuming you start with variables:
This will give output
1212
:And this will give output
24
:最佳解决方案已经讨论过。
无论如何,你也可以这样做:
鉴于您总是处理 5 位数字,
我并不是说这是最好的方法;只是添加一种替代方法来查看类似情况。 :)
Best solutions are already discussed.
For the heck of it, you could do this as well:
Given that you are always dealing with 5 digits,
I am not claiming this is the best way; just adding an alternate way to look at similar situations. :)
难道你不能直接创建数字字符串,连接它们,然后将字符串转换为整数值吗?
Couldn't you just make the numbers strings, concatenate them, and convert the strings to an integer value?