簡體   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