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

时间:2016-02-17 02:27:26

标签: java arrays char render-to-string

我有一个存储了四个字符的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 个答案:

答案 0 :(得分:2)

您不需要为角色阵列带来所有麻烦。 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

<强>加成: 你可以用这样的0填充数字部分:

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

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

例如:45变为004512345保持12345

答案 1 :(得分:1)

您尝试分配给emp[count]的值是ascii值1

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

emp[count] = 49;

emp[count] = 48 + 1;

emp[count] = '1';

修改根据您的评论,如果您尝试的所有内容都创建了新文件名,则甚至不需要这些arrays

请参阅@ Code-Apprentice的答案

String file = base + 1 + extension;

答案 2 :(得分:1)

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

String file = base + 1 + extension;

请注意,1在这里并不特别。它是类型为int的值。因此,您可以使用变量名称轻松替换它。

答案 3 :(得分:0)

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

emp[count] = (char)1;

请改为尝试:

emp[count] = '1';

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

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