在String中将String []数组转换为动态char []数组?

时间:2014-02-22 05:51:21

标签: java arrays string char

我有以下代码片段,在这段代码中我想根据String数组的长度将String数组转换为动态生成的char数组。我的方法/技术是可行的还是我必须选择其他数据类型...实际上我必须对单词的每个字符执行逻辑,这就是为什么我将String数组分解为char []数组....

private String[] function(String[] words) {
    String[] names = words;

    char[] CArray= null;

    for (int i = 0; i < names.length ; i++){
        CArray = names[i].toCharArray();
    }

    for (int i = 0; i < CArray.length ; i++){
        System.out.print(CArray[i]);
    }

    return names;           
}

Guys plz试图表明我希望char []数组的名称在序列quto中生成,基于String数组的长度意味着如果有4个单词在一个名字中有4个char []数组序列,如S0,S1,S2,S3或其他任何东西.. !!!!!

好的伙伴们,这就是我想要实现的目标 char [] S1或anyname = words [0] .toCharArray();
char [] S2或anyname = words [1] .toCharArray();
所以...取决于传递的字符串数组的数量,,,这样我留下char []数组S1,S2,S3来进行我的进一步操作..... plz plz现在弄明白了......! !希望我清楚地了解问题.. ??

4 个答案:

答案 0 :(得分:0)

你想要的是将字符串数组中的每个字符放入char数组????。

如果是,您有几种方法可以做到这一点。

为避免使用数组列表(增加其dinamycally容量),您必须知道字符串数组的每个索引中的字符数量,遍历每个索引,将字符数量添加到您之前声明的变量中(让我们称之为sumChar),然后创建一个容量等于sumChar char []的char数组Carray = new chat [sumChar]。

然后做这样的事情 int indexPos = 0;

for (int i=0;i<names.length;i++)
{
   for (int c=0;c<names[i];length;c++)
    {
          Carray[indexPos++]=names[i].charAt(c);
    }
}

就是这样,我上面的代码没有测试它,所以任何问题都可以随意提问

答案 1 :(得分:0)

我认为这就是你要找的东西:

private static char[] stringArrayToCharArray (String[] words) {
    int arrayLength = 0;

    // Calculate the total size of the char array by adding the strings sizes
    for (final String word : words)
        arrayLength += word.length();

    // Create the char array
    char[] charArray = new char[arrayLength];

    int arrayIndex = 0;

    // Fill the array
    for (final String word : words)
        for (int i=0; i<word.length(); i++)
            charArray[arrayIndex++] = word.charAt(i);

    return charArray;           
}

以下是如何使用它:

String[] strs = {"test", "other"};
char[] chars = stringArrayToCharArray(strs);

答案 2 :(得分:0)

我担心这甚至不是很接近..你执行了代码并看到了它的结果吗?

  1. 不要挑选,但这有点重要:Java中的变量名以小写字母开头,因此cArray而不是CArray。为读者带来了很多困惑(它是一个变量吗?它是一个类吗?等等。)

  2. 这条线的目的是什么?为什么不用单词?

      

    String [] names = words;

  3. 以下代码导致CArray成为包含最后一个字的字符数组。除了最后一个单词之外的所有其他单词都将被丢弃。

  4. for (int i = 0; i < names.length ; i++){ CArray = names[i].toCharArray();

    也许你的意思是将第二个循环嵌入到第一个循环的主体中?

    1. 然后你返回names,这与words完全相同,那里没有字符数组。

    2. 也许您希望function返回一组字符数组?

    3. 我不确定你是否真的想转换为字符数组数组,而不是使用StringBuffer或正则表达式。 Java中的大多数文本操作都是以这种方式完成的。

    4. 我建议在进入编码之前研究更多..

答案 3 :(得分:0)

这是一个程序,然后演示你的要求:

public class CharArray {

public CharArray() {
    String[] words = { "First", "Second" };

    for (String word : words) {
        for (char character : word.toCharArray()) {
            System.out.print(character + " ");
        }
        System.out.println();
    }
}

public static void main(String[] args) {
    new CharArray();
}
}

单词数组中出现的单词将逐一出现在构造函数中的character变量中。在那里做任何你想做的事。

希望它有所帮助。