Java字符数组初始化器

8
我尝试编写一个程序来分离字符。 问题是: "创建一个字符数组,并使用数组初始化器将该数组初始化为字符串 'Hi there' 中的字符。使用for循环语句显示数组的内容。在数组中用空格分隔每个字符。"
我写的程序:
String ini = "Hi there";
char[] array = new char[ini.length()];

for(int count=0;count<array.length;count++) {
   System.out.print(" "+array[count]);
}

我该怎么做才能解决这个问题?

可能是重复的问题:如何使用字符文字初始化字符数组? - Stephan
https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#fill(char[],%20int,%20int,%20char) - 如果你想让所有的元素都相同。 - JGFMK
7个回答

19

这是将字符串转换为字符数组的方法:

String str = "someString"; 
char[] charArray = str.toCharArray();

在编程时,我建议您使用一个集成开发环境(IDE),以便轻松查看一个类包含哪些方法(在这种情况下,您将能够找到toCharArray()),并查找像上面那样的编译错误。您还应该熟悉文档,这种情况下应该是这个String文档

此外,请始终发布您收到的编译错误。在这种情况下,很容易发现,但如果没有包含在帖子中,您将无法得到任何答案。


1
你做错了,你需要首先使用String.split()函数将字符串以空格为分隔符进行分割,并将字符数组填充到字符。或者更简单的方法是只需在循环中使用String.charAt()来填充数组,如下所示:
String ini="Hi there";
  char[] array=new  char[ini.length()];

  for(int count=0;count<array.length;count++){
         array[count] = ini.charAt(count);
  System.out.print(" "+array[count]);
  }

一行代码的话可以写成:
  String ini="Hi there";
  char[] array=ini.toCharArray();

1
char array[] = new String("Hi there").toCharArray();
for(char c : array)
    System.out.print(c + " ");

2
直接的代码答案对提问者提供了很少关于你的解决方案或为什么它有效的信息。请给出一些解释或叙述。 - m_callens

0

另一种简单的方法是在声明中使用字符串字面量并将其转换为charArray。

像这样 -

char array[] = "Hi there".toCharArray();

//Print with white spaces
for(char c : array)
   System.out.print(c + " ");

0

这里是代码

String str = "Hi There";
char[] arr = str.toCharArray();

for(int i=0;i<arr.length;i++)
    System.out.print(" "+arr[i]);

0

不必采用上述方法,您可以通过以下简单的方法实现解决方案。

public static void main(String args[]) {
    String ini = "Hi there";
    for (int i = 0; i < ini.length(); i++) {
        System.out.print(" " + ini.charAt(i));
    }
}

0
你初始化并声明了一个字符串为“Hi there”,用正确的大小初始化了char[]数组,并开始循环遍历数组的长度,将一个空字符串与正在查看的给定元素组合打印出来。你在什么时候考虑将字符从字符串放入数组的功能因素进去?
当你尝试打印数组中的每个元素时,你打印了一个空字符串,因为你将“nothing”添加到一个空字符串中,而且没有功能将输入字符串中的字符添加到数组中。但是你周围的所有东西都实现得很正确。这是应该在你初始化数组之后,但在迭代数组以打印元素的for循环之前执行的代码。
for (int count = 0; count < ini.length(); count++) {
  array[count] = ini.charAt(count);
}

将for循环合并以在将字符放入数组后立即打印每个字符会更有效率。

for (int count = 0; count < ini.length(); count++) {
  array[count] = ini.charAt(count);
  System.out.println(array[count]);
}

此时,您可能会想知道为什么要将它放在char[]中,而不是直接使用对String对象ini的引用来打印它们。

String ini = "Hi there";

for (int count = 0; count < ini.length(); count++) {
   System.out.println(ini.charAt(count));
}

一定要了解Java字符串。在我看来,它们非常有趣且工作得相当不错。这是一个不错的链接:https://www.javatpoint.com/java-string

String ini = "Hi there"; // stored in String constant pool

在内存中存储方式与不同

String ini = new String("Hi there"); // stored in heap memory and String constant pool

这个标签的存储方式与其他不同。

char[] inichar = new char[]{"H", "i", " ", "t", "h", "e", "r", "e"};
String ini = new String(inichar); // converts from char array to string

.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接