如何转换数字并将其存储在 char 数组中,然后将 char 数组转换为 String 以便打印整数?

How do you convert a number and store it in a char array and then convert the char array to String so that it prints the integer?

我有一个存储了四个字符的 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);

  }
}

这将插入值为 1 的字符而不是字符 1。

emp[count] = (char)1;

试试这个:

emp[count] = '1';

编辑: 如果你想要更动态的

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

您要分配给 emp[count] 的值是 1

的 ascii 值

你想要的是 1 的 ascii 值,即 49,所以你可以

emp[count] = 49;

emp[count] = 48 + 1;

emp[count] = '1';

编辑 根据您的评论,如果您尝试做的只是创建一个新文件名,那么这些 arrays 甚至都不需要。

看@Code-Apprentice的回答

String file = base + 1 + extension;

请记住,+ 运算符专门用于连接字符串。最重要的是,当 + 的另一个操作数是 String 时,任何内容都会自动转换为 String。所以你可以在一行中完成所有这些:

String file = base + 1 + extension;

注意 1 在这里并不特殊。它是一个类型为 int 的值。因此,您可以轻松地将其替换为变量名。

您无需为字符数组解决所有问题。 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 周围的括号。如果没有括号,i1 分别转换为字符串,然后连接到字符串。例如,如果 i5,则没有括号会得到 51,而有括号你会得到 6.

奖金: 您可以像这样用 0s 填充数字部分:

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

这样,如果长度小于 4,则编号部分用零填充以使长度为 4。但是,如果长度为 4 或大于 4,则数字不会被删除。

例如:45变为004512345保持12345