[英]concatenating two int in java
是否有一種簡單的方法,而不必使用java庫來連接兩個int? 也許數學?
說我有9和10,然后我希望它是910,或224和225然后我希望它是224225。
java.lang.*
任何內容都應該是合理的游戲......
int a = Integer.parseInt(Integer.toString(9) + Integer.toString(10));
附錄:
我不喜歡以下語法,因為運算符重載不像上面那樣清楚地聲明intent。 主要是因為如果錯誤地取出空字符串,結果是不同的。
int a = Integer.parseInt(9 + "" + 10);
這將按預期返回一個整數,但僅在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)
未定義。
您(可能)想要字符串連接(您可能還需要整數結果,如果是這種情況,請參閱其他答案)。 如果這是真的,關於連接,假設a和b是整數:
"" + a + b
這是有效的,因為如果任一操作數是String,則+運算符會被重載。 然后它將另一個操作數轉換為字符串(如果需要)並生成一個新的連接字符串。 您也可以調用Integer.toString(a) + Integer.toString(b)
或使用適當的String.format
但這些方法更加冗長。
這是我的版本,當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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.