Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何转换数字并将其存储在字符数组中,然后将字符数组转换为字符串,以便打印整数?_Java_Arrays_Char_Render To String - Fatal编程技术网

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

Java 如何转换数字并将其存储在字符数组中,然后将字符数组转换为字符串,以便打印整数?,java,arrays,char,render-to-string,Java,Arrays,Char,Render To String,我有一个存储了四个字符的char数组,我需要向char数组中添加一个整数,然后将.txt添加到if的末尾,然后将整个内容呈现为字符串,这样我就可以使用它创建一个file对象。但当我运行整个过程时,它不起作用。使用println来输出每一步发生的事情,它向我显示存储在char数组中的数字正在打印为string,如下所示:(0001)而不仅仅是这(1)。为什么会这样?我该如何应对?我在这里输入了一段代码的简短版本来演示这个问题。下面printline语句的输出是:temp 0001.txt,而不是t

我有一个存储了四个字符的char数组,我需要向char数组中添加一个整数,然后将.txt添加到if的末尾,然后将整个内容呈现为字符串,这样我就可以使用它创建一个file对象。但当我运行整个过程时,它不起作用。使用println来输出每一步发生的事情,它向我显示存储在char数组中的数字正在打印为string,如下所示:(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);

  }
}
公共类测试{
公共静态void main(字符串[]args){
整数计数=4;
字符[]临时=新字符[计数+5];
字符[]基=新字符[]{'t','e','m','p'};
字符[]扩展名=新字符[]{'.','t','x','t'};
对于(int i=0;i<4;i++)
温度[i]=基准[i];
临时[计数]=(字符)1;
对于(int k=0;k<4;k++)
临时[计数+1+k]=扩展[k];
字符串文件=新字符串(临时);
System.out.println(文件);
}
}

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

emp[count] = (char)1;
请尝试以下方法:

emp[count] = '1';
编辑: 如果你想让它更有活力

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

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

emp[count] = (char)1;
请尝试以下方法:

emp[count] = '1';
编辑: 如果你想让它更有活力

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

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

您需要的是
1
的ascii值,即49,因此您可以这样做

emp[count] = 49;

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

请参阅@Code学徒的答案

String file = base + 1 + extension;

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

您需要的是
1
的ascii值,即49,因此您可以这样做

emp[count] = 49;

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

请参阅@Code学徒的答案

String file = base + 1 + extension;

请记住,
+
运算符专门处理字符串以将其关联起来。除此之外,当
+
的另一个操作数是
字符串时,任何内容都会自动转换为
字符串。因此,您可以在一行中完成所有这些:

String file = base + 1 + extension;

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

请记住,
+
运算符专门处理字符串以将其关联起来。除此之外,当
+
的另一个操作数是
字符串时,任何内容都会自动转换为
字符串。因此,您可以在一行中完成所有这些:

String file = base + 1 + extension;

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

您不需要为字符数组承担所有麻烦。Java已经为您完成了大部分工作。尝试这段更简单的代码,创建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);
    }
  }
}
这样,如果长度小于4,则用零填充编号部分,使长度为4。但是,如果长度为4或大于4,则该数字不会被剥离


例如:
45
变为
0045
12345
保持
12345
,您不需要为字符数组承担所有的麻烦。Java已经为您完成了大部分工作。尝试这段更简单的代码,创建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);
    }
  }
}
这样,如果长度小于4,则用零填充编号部分,使长度为4。但是,如果长度为4或大于4,则该数字不会被剥离


例如:
45
变为
0045
12345
保持
12345

是否有任何理由将其保留为数组?我的意思是你可以只做
s=newstring(base)+Integer.toString(theNumberToAdd)+newstring(extension)@FabianN。在这里,对
Integer.toString()
的显式调用甚至是可选的。@code学徒我有点太小心了,因为我做了很多Javascript atm,不想在Java中运行
number='6'*1
,看看我的答案中解决问题的更简单方法。和我一起唱:当我们可以使用字符串时没有字符数组:)我不喜欢OPs不接受任何答案就走开。我们的努力是徒劳的吗(你有什么理由把它作为一个数组保存吗?我的意思是你可以只做
s=newstring(base)+Integer.toString(theNumberToAdd)+newstring(extension);
@FabianN。还有显式调用
Integer.toString()
在这里甚至是可选的。@code学徒我有点太小心了,因为我做了很多Javascript atm,不想在Java中运行
number='6'*1
在我的回答中看看解决问题的更简单的方法。和我一起唱:当我们可以使用字符串时,没有字符数组:)我不喜欢老年退休金计划不接受任何回答就走开。我们的努力是徒劳的吗(在我正在制作的实际程序中,我必须通过一个循环创建具有不同数字(temp1.txt、temp2.txt…等)的多个文件名,如何才能使其在这种情况下工作,因为我需要根据将int变量从for循环转换为数字来分配文件名字符串中的数字?因此,它将是tem