有没有一种简单的方法,无需使用java库就可以连接两个整数?也许可以用数学方法吗?
比如说我有9和10,我想要它变成910,或者224和225,我想要它变成224225。
有没有一种简单的方法,无需使用java库就可以连接两个整数?也许可以用数学方法吗?
比如说我有9和10,我想要它变成910,或者224和225,我想要它变成224225。
java.lang.*
中的任何内容都应该是合理的选择...
int a = Integer.parseInt(Integer.toString(9) + Integer.toString(10));
补充:
我不喜欢下面的语法,因为操作符重载并没有像上面那样清晰地声明意图。主要是因为如果误将空字符串去掉,结果会不同。
int a = Integer.parseInt(9 + "" + 10);
int a = Integer.parseInt(9 +""+ 10)
。更加精确。 - Adeel Ansari这将按预期返回一个整数,但仅在 b > 0
时有效。
int a = 224;
int b = 225;
int c = (int) Math.pow(10, Math.floor(Math.log10(b))+1)*a + b; // 224225
只是一个简单的解释:这个代码块决定了数字 b
的位数,然后计算出一个乘法因子,使得数字 a
在十进制下比 b
多移动一位。b
有3位数字,floor(log10(b))
返回2(可以通过直觉理解为 10^2=100
,10^3 = 1000
,我们在225之间)。然后,我们计算一个乘法因子 10^(2+1)
,这是 1000
。当我们将 a
乘以1000时,得到的结果是 224000
。将 224000
加上 225
就得到了所需的结果 224225
。b == 0
时会出现错误,因为 log10(0)
是未定义的。您(很可能)需要字符串拼接(如果您还需要一个整数结果,可以参见其他答案)。如果这是真的,关于拼接,想象一下a和b是整数:
"" + a + b
Integer.toString(a) + Integer.toString(b)
或使用适当的String.format
方法,但这些方法更冗长。a
和 b
的意图就不清楚了。 - JeremyInteger.toString(a+b)
。 - Jeremy+
改为*
,将&&
改为||
等。真正的答案是在阅读和修改代码时要小心谨慎。 - Stephen C以下是我适用于 a、b >= 0 的版本。
这个版本会稍微冗长一些,但比对数取对数的方法快10倍,比拼接字符串的方法快5倍。
int concat(int a, int b)
{
if ( b == 0 )
a *= 10;
else
{
int tempB = b;
while ( tempB > 0 )
{
tempB /= 10;
a *= 10;
}
}
return a + b;
}
请随意修改此代码以使其适用于负数。
a + "" + b
会导致错误 "不兼容的类型"
// The left operand to previousOperator.
private int leftOperand;
leftOperand = leftOperand + " " + number;
在方法声明中,number被定义为int类型。
这个方法是有效的。
import java.lang.*
leftOperand = Integer.parseInt(Integer.toString(leftOperand) + Integer.toString(number));