是否有一种简单的方法,而不必使用java库来连接两个int?也许数学?
说我有9和10,然后我希望它是910,或224和225然后我希望它是224225。
答案 0 :(得分:18)
java.lang.*
中的任何内容都应该是合理的游戏......
int a = Integer.parseInt(Integer.toString(9) + Integer.toString(10));
附录:
我不喜欢以下语法,因为运算符重载并不像上面那样清楚地声明意图。主要是因为如果错误地取出空字符串,结果会有所不同。
int a = Integer.parseInt(9 + "" + 10);
答案 1 :(得分:16)
这将按预期返回一个整数,但只能在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
的倍增因子,使其在基数10中移动的位数比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)
未定义。
答案 2 :(得分:4)
您(可能)想要字符串连接(您可能还需要整数结果,如果是这种情况,请参阅其他答案)。如果这是真的,关于连接,假设a和b是整数:
"" + a + b
这是有效的,因为如果任一操作数是String,则+运算符会被重载。然后它将另一个操作数转换为字符串(如果需要)并生成一个新的连接字符串。您也可以调用Integer.toString(a) + Integer.toString(b)
或使用适当的String.format
,但这些方法更加冗长。
答案 3 :(得分:1)
这是我的版本,当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;
}
随意修改此项以适用于负数。
答案 4 :(得分:0)
a +"" + b
导致错误"不兼容的类型"
// The left operand to previousOperator.
private int leftOperand;
leftOperand = leftOperand +" " +数字;
number在方法声明
中定义为int这有效
import java.lang。*
leftOperand = Integer.parseInt(Integer.toString(leftOperand)+ Integer.toString(number));