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

У меня есть массив char с четырьмя символами, и мне нужно добавить целое число в массив char, а затем добавить.txt в конец if, а затем отобразить все это как строку, чтобы я мог использовать его для создания объекта файла, Но когда я запускаю весь процесс, он не работает. Использование println для вывода того, что происходит на каждом шаге, показывает мне, что число, хранящееся в массиве char, печатает в строку следующим образом: ( 0001) вместо этого (1). Почему это так и как мне обойти это? Я напечатал короткую версию сегмента кода здесь, чтобы продемонстрировать проблему. Вывод инструкции printline ниже таков: temp 0001 .txt вместо temp1.txt, что я и пытаюсь получить. Спасибо за любую помощь, которую вы можете предложить.

public class Test {
  public static void main(String[] args) {
  int count = 4;
  char[] temp = new char[count + 5];
  char[] base = new char[] {'t', 'e', 'm', 'p'};

  char[] extension = new char[] {'.', 't', 'x', 't'};
  for (int i = 0; i < 4; i++)
     temp[i] = base[i];

  temp[count] = (char)1;
  for (int k = 0; k < 4; k++)
     temp[count + 1 + k] = extension[k];

  String file = new String(temp);

  System.out.println(file);

  }
}

4 ответа

Решение

Это вставит символ со значением 1 вместо персонажа 1.

emp[count] = (char)1;

Попробуйте это вместо этого:

emp[count] = '1';

Изменить: если вы хотите более динамично

int i = ...
emp[count] = (char) ('0'+ i);

Вам не нужно брать на себя все неприятности с массивами персонажей. Java сделала большую часть работы за вас с помощью String. Попробуйте этот более простой код, чтобы создать 10 имен файлов. Я думаю, что вы пытаетесь создать несколько файлов с пронумерованными именами с одинаковым базовым именем.

public class Test {
  public static void main(String[] args) {
    String baseName = "temp";
    String extension = ".txt";

    // create 10 file names
    for(int i=0; i<10; i++) {
      String newName = baseName + (i+1) + extension;
      System.out.println(newName);
    }
  }
}

Обратите внимание на круглые скобки i+1, Без скобок, i а также 1 приводятся к строке отдельно, а затем объединяются в строку. Например, если i является 5тогда без скобок это дает 51тогда как с круглыми скобками вы получите 6,

Бонус: Вы можете дополнить номерную часть 0вот так:

String newName = baseName + String.format("%04d", i+1) + extension;

При этом нумерованная часть дополняется нулями, чтобы сделать длину 4, если длина меньше 4. Однако, если длина 4 или больше 4, число не удаляется.

Например: 45 становится 0045, 12345 остается 12345

Помните, что + Оператор работает специально со строками, чтобы соединить их. Кроме того, все автоматически преобразуется в String когда другой операнд + это String, Таким образом, вы можете сделать все это в одной строке:

String file = base + 1 + extension;

Обратите внимание, что 1 здесь не является особенным. Это значение с типом int, Таким образом, вы можете легко заменить его именем переменной.

Значение, которое вы пытаетесь присвоить emp[count] значение ASCII 1

То, что вы хотите, это значение ASCII 1 что 49, так что вы могли бы сделать

emp[count] = 49;

или же

emp[count] = 48 + 1;

или же

emp[count] = '1';

Редактировать Согласно вашим комментариям, если все, что вы пытаетесь сделать, это создать новое имя файла, то эти arrays даже не нужны.

Смотрите ответ от @Code-Apprentice

String file = base + 1 + extension;
Другие вопросы по тегам