2010-11-10 46 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(数));