Подтвердить что ты не робот

Как конкатенировать значения int в java?

У меня есть следующие значения:

int a=1; 
int b=0;
int c=2;
int d=2;
int e=1;

Как объединить эти значения, чтобы в итоге я получил строку 10221; обратите внимание, что умножение a на 10000, b на 1000..... и e на 1 не будет работать с b=0, и поэтому я потеряю его, когда я добавлю значения вверх.

4b9b3361

Ответ 1

Самый простой (но несколько грязный) способ:

String result = "" + a + b + c + d + e

Изменить: Я не рекомендую это и согласен с комментарием Джона. Добавление этих лишних пустых строк, вероятно, является лучшим компромиссом между коротким и ясностью.

Ответ 2

Решение Michael Borgwardt является лучшим для 5 цифр, но если у вас есть переменное количество цифр, вы можете использовать что-то вроде этого:

public static String concatenateDigits(int... digits) {
   StringBuilder sb = new StringBuilder(digits.length);
   for (int digit : digits) {
     sb.append(digit);
   }
   return sb.toString();
}

Ответ 3

Это сработало для меня.

int i = 14;
int j = 26;
int k = Integer.valueOf(String.valueOf(i) + String.valueOf(j));
System.out.println(k);

Это оказалось как 1426

Ответ 4

На самом деле,

int result = a * 10000 + b * 1000 + c * 100 + d * 10 + e;
String s = Integer.toString(result);

будет работать.

Примечание: это будет работать только тогда, когда a больше 0, а все b, c, d и e находятся в [0, 9]. Например, если b равно 15, метод Майкла даст вам результат, который вы, вероятно, захотите.

Ответ 5

чтобы не забыть метод format

String s = String.format("%s%s%s%s%s", a, b, c, d, e);

(%1.1s%1.1s%1.1s%1.1s%1.1s, если вам нужна только первая цифра каждого номера...)

Ответ 6

StringBuffer sb = new StringBuffer();
sb.append(a).append(b).append(c)...

Сохранение значений как int предпочтительнее, как показывают другие ответы.

Ответ 7

Другие указали, что умножение b на 1000 не должно вызывать проблемы, но если a равно нулю, вы потеряете его. (Вы получите 4-значную строку вместо 5.)

Здесь альтернативный (общий) подход - который предполагает, что все значения находятся в диапазоне 0-9. (Вполне вероятно, что вы добавите некоторый код для исключения, если это окажется недействительным, но я оставил его здесь для простоты.)

public static String concatenateDigits(int... digits)
{
    char[] chars = new char[digits.length];
    for (int i = 0; i < digits.length; i++)
    {
        chars[i] = (char)(digits[i] + '0');
    }
    return new String(chars);
}

В этом случае вы бы назвали его с помощью:

String result = concatenateDigits(a, b, c, d, e);

Ответ 8

Если вы умножаете b на 1000, вы не потеряете ни одного из значений. См. Ниже математику.

10000
    0
  200
   20
    1
=====
10221

Ответ 9

Для удовольствия... как НЕ сделать это ; -)

String s = Arrays.asList(a,b,c,d,e).toString().replaceAll("[\\[\\], ]", "");

Не то, чтобы кто-нибудь действительно думал об этом в этом случае, но это иллюстрирует, почему важно предоставить доступ к определенным членам объекта, иначе пользователи API в конечном итоге проанализируют строковое представление вашего объекта, а затем вы застрял, не в состоянии его модифицировать, или рискуя сломать свой код, если вы это сделаете.

Ответ 10

Предполагая, что вы начинаете с переменных:

int i=12;
int j=12;

Это даст результат 1212:

System.out.print(i+""+j); 

И это даст результат 24:

System.out.print(i+j);

Ответ 11

Я бы предложил преобразовать их в строки.

StringBuilder concatenated = new StringBuilder();
concatenated.append(a);
concatenated.append(b);
/// etc...
concatenated.append(e);

Затем преобразование обратно в Integer:

Integer.valueOf(concatenated.toString());

Ответ 12

Использовать StringBuilder

StringBuilder sb = new StringBuilder(String.valueOf(a));
sb.append(String.valueOf(b));
sb.append(String.valueOf(c));
sb.append(String.valueOf(d));
sb.append(String.valueOf(e));
System.out.print(sb.toString());

Ответ 13

Люди беспокоились о том, что происходит, когда a == 0. Простое исправление для этого... перед ним стоит цифра.:)

int sum = 100000 + a*10000 + b*1000 + c*100 + d*10 + e;
System.out.println(String.valueOf(sum).substring(1));

Самый большой недостаток: он создает две строки. Если это очень важно, String.format может помочь.

int sum = a*10000 + b*1000 + c*100 + d*10 + e;
System.out.println(String.format("%05d", sum));

Ответ 14

Вы можете использовать

String x = a+"" +b +""+ c+""+d+""+ e;
int result = Integer.parseInt(x);

Ответ 15

Лучшие решения уже обсуждаются. Для этого вы могли бы это сделать: Учитывая, что вы всегда имеете дело с 5 цифрами,

(new java.util.Formatter().format("%d%d%d%d%d", a,b,c,d,e)).toString()

Я не утверждаю, что это лучший способ; просто добавляя альтернативный способ взглянуть на подобные ситуации.:)

Ответ 16

Как насчет того, чтобы не использовать строки вообще...

Это должно работать для любого количества цифр...

int[] nums = {1, 0, 2, 2, 1};

int retval = 0;

for (int digit : nums)
{
    retval *= 10;
    retval += digit;
}

System.out.println("Return value is: " + retval);

Ответ 17

Отмечая обсуждение здесь и следуя общим решениям в в настоящее время наиболее широко распространенным ответом, я бы вероятно, предложите следующую альтернативу:

 public static String concatenateDigits(int... digits) {
   String result = "";
   for (int digit : digits) {
     result += digit;
   }
   return result;
}

Я бы отложил свою первую ссылку для обсуждения того, действительно ли она скомпилирована в тот же самый байт-код, что и исходное решение, но я нахожу его более интуитивным, быстрее читаемым и менее раздутым, чтобы придерживаться языковые функции, а не вызовы API. Но это ясно мнение.

Ответ 18

Не могли бы вы просто сделать строки чисел, объединить их и преобразовать строки в целое значение?

Ответ 19

После Java 8 вы можете использовать StringJoiner, очень чистый и более гибкий способ (особенно если у вас есть список как входной вместо известного набора переменных ae):

int a = 1;
int b = 0;
int c = 2;
int d = 2;
int e = 1;
List<Integer> values = Arrays.asList(a, b, c, d, e);
String result = values.stream().map(i -> i.toString()).collect(Collectors.joining());
System.out.println(result);

Если вам нужен разделитель, используйте:

String result = values.stream().map(i -> i.toString()).collect(Collectors.joining(","));

Чтобы получить следующий результат:

1,0,2,2,1

Ответ 20

публичный класс, соединяющий {

public static void main(String[] args) {
    int a=1; 
    int b=0;
    int c=2;
    int d=2;
    int e=1;


    String j = Long.toString(a);
    String k = Long.toString(b);
    String l = Long.toString(c);
    String m = Long.toString(d);
    String n = Long.toString(e);

   /* String s1=Long.toString(a);    // converting long to String
    String s2=Long.toString(b);
    String s3=s2+s1;
    long c=Long.valueOf(s3).longValue();    // converting String to long
    */


    System.out.println(j+k+l+m+n);  



}

}