Как преобразовать число и сохранить его в массиве символов, а затем преобразовать массив символов в строку, чтобы он печатал целое число?
У меня есть массив 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;