2010-11-10 50 views
5

有沒有簡單的方法,而無需使用java庫來連接兩個int?也許數學?在java中連接兩個int

說我有9個和10個,那麼我希望它是910,或224和225,然後我想這是224225.

+1

你想結果也是一個整數? – 2010-11-10 02:34:40

+3

我錯過了什麼?怎麼樣:字符串結果= 9 +「」+ 10;或者int i = Integer.valueOf(9 +「」+ 10); – 2010-11-10 02:35:33

+0

是的!最終結果爲整數請! – aherlambang 2010-11-10 02:49:53

回答

18

任何東西java.lang.*應該是公平的遊戲...

int a = Integer.parseInt(Integer.toString(9) + Integer.toString(10)); 

附錄:

我不喜歡下面的語法,因爲操作符重載未聲明的意圖儘可能清楚以上。主要是因爲如果空串被錯誤取出,結果會有所不同。

int a = Integer.parseInt(9 + "" + 10); 
+1

我喜歡使它成爲'int a = Integer.parseInt(9 +「」+ 10)'。更精確。 – 2010-11-10 03:14:35

+1

@Adeel - 我不同意。閱讀我對pst答案的評論。 – Jeremy 2010-11-10 03:15:18

+0

@Jeremy:這不適用於此。因爲如果你不小心刪除了'empty_quotes',那麼第二天早上你會想我爲什麼要把'int'解析爲'int'。這應該給你一個暗示,你從來沒有這麼愚蠢,一開始就這麼做。所以,一定有一些缺失。哦,是的'empty_quotes'。 – 2010-11-10 03:19:38

4

你(可能)要字符串連接(你可能還需要一個整數結果,如果是這種情況,請參閱其他答案)。如果這是真的,對串聯,想象a和b是整數:

"" + a + b 

這工作,因爲如果操作數是一個字符串+運算符重載。然後它將另一個操作數轉換爲一個字符串(如果需要)並生成一個新的連接字符串。您也可以調用Integer.toString(a) + Integer.toString(b)或使用合適的String.format,但這些方法更加冗長。

+2

我一直不喜歡這種表示法。如果字符串被取出,連接'a'和'b'的意圖不明確。 – Jeremy 2010-11-10 02:37:55

+1

'a +「」+ b'對起跑者來說更具可讀性。 – BalusC 2010-11-10 02:38:54

+0

@Jeremy靜態打字是我的朋友:-) – 2010-11-10 02:39:43

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=10010^3 = 1000,我們是介於兩者之間的225)。然後我們計算一個倍增因子10^(2+1),這是1000。當我們將a乘以1000時,我們得到224000。將224000添加到225會得到所需的224225

由於log10(0)未定義,因此在b == 0處失敗。

+0

有趣。 +1 – 2010-11-10 02:44:53

+0

那太棒了! +1 – 2010-11-10 02:57:35

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; 
} 

隨意修改此爲負數的工作。

0

一個+ 「」 + B

導致錯誤 「不兼容的類型」

// The left operand to previousOperator. 
private int leftOperand; 

leftOperand = leftOperand + 「」 +號碼;

號在方法聲明定義爲int

這工作

進口的java.lang。*

leftOperand =的Integer.parseInt(Integer.toString(leftOperand)+ Integer.toString(數));