Есть ли простой способ без использования библиотеки java для concat two int? Может быть, математика?конкатенирование двух int в java
говорят, у меня есть 9 и 10, то я хочу, чтобы это было 910 или 224 и 225, то я хочу, чтобы это было 224225.
Есть ли простой способ без использования библиотеки java для concat two int? Может быть, математика?конкатенирование двух int в java
говорят, у меня есть 9 и 10, то я хочу, чтобы это было 910 или 224 и 225, то я хочу, чтобы это было 224225.
Все в java.lang.*
должна быть честной игры ...
int a = Integer.parseInt(Integer.toString(9) + Integer.toString(10));
Добавление:
Мне не нравится следующий синтаксис, так как перегрузка оператора не декларирует намерения так же ясно, как вышесказанное. В основном потому, что, если пустая строка ошибочно выведена, результат отличается.
int a = Integer.parseInt(9 + "" + 10);
Мне нравится делать это 'int a = Integer.parseInt (9 +" "+ 10)'. Гораздо точнее. –
@ Adeel - Я не согласен. Прочтите мои комментарии на ответ pst. – Jeremy
@Jeremy: Это не держится здесь. Потому что, если вы случайно удалите 'empty_quotes', то на следующее утро вы поймете, почему я должен анализировать' int' на 'int'. И это должно дать вам намек на то, что вы никогда не были настолько глупы, чтобы делать это на первом месте. Таким образом, должно быть что-то отсутствует. О, да, 'empty_quotes'. –
Вы (вероятно) хотят конкатенации (вы также можете целочисленный результат , если это так, см. другие ответы). Если это правда, о конкатенации, представьте и Ь целые числа:
"" + a + b
Это работает, потому что оператор + перегружено, если один из операндов является строкой. Затем он преобразует другой операнд в строку (при необходимости) и приводит к новой конкатенированной строке. Вы также можете вызвать Integer.toString(a) + Integer.toString(b)
или с помощью соответствующего String.format
, но эти методы более длинны.
Это даст вам целое назад, как ожидалось, но работает только когда 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)
не определено.
Интересно. +1 –
Это было так аккуратно! +1 –
Вот моя версия, которая работает, когда а, Ь> = 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;
}
Не стесняйтесь модифицировать это, чтобы работать на отрицательные числа.
а + "" + Ь
приводит к ошибке "несовместимых типов"
// The left operand to previousOperator.
private int leftOperand;
leftOperand = leftOperand + "" + номер;
число определяется как междунар в объявлении метода
Это работает
импорта java.lang. *
leftOperand = Integer.parseInt (Integer.toString (leftOperand) + Integer.toString (номер));
Вы хотите, чтобы результат также был целым числом? –
Я что-то не хватает? как об этом: Строковый результат = 9 + "" + 10; или int i = Integer.valueOf (9 + "" + 10); –
да! конечный результат как целое! – aherlambang