繁体   English   中英

在java中连接两个int

[英]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 添加224000225产生所需的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM