【问题标题】:Converting String[] array to dynamic char[] array in java?在java中将String []数组转换为动态char []数组?
【发布时间】:2014-03-23 21:46:12
【问题描述】:

我有以下一段代码,在这段代码中,我想根据 String 数组的长度将 String 数组转换为动态生成的 char 数组。我的方法/技术是可行的还是我必须选择其他数据类型...实际上我必须对单词的每个字符执行逻辑,这就是我将字符串数组分解为 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;           
}

伙计们请尝试理解,我希望根据字符串数组的长度按顺序生成 char[] 数组的名称,这意味着如果 a 中有 4 个单词具有名称,则应该有 4 个 char[] 数组序列如 S0,S1,S2,S3 或其他任何东西..!!!!!

好的,伙计们,这就是我想要实现的目标
char[] S1 或 anyname = words[0].toCharArray();
char[] S2 或 anyname = words[1].toCharArray();
依此类推...取决于传递的字符串数组的数量,这样我就剩下 char[] 数组 S1、S2、S3 来进行我的进一步操作.....请现在弄清楚它......! !希望我能清楚地理解这些问题..??

【问题讨论】:

  • 为什么不使用String类提供的charAt方法来访问它的每个字符呢?
  • 你能告诉我@AwfullyAwesome 我该怎么做..!!兄弟尝试了几件事,现在我已经吃饱了..!!
  • 好吧,你想让这个函数做什么?一旦你告诉我,我会编写它的代码来展示它是如何完成的。
  • 我实际上希望输出类似于 char[] name = words[0] 和 char[] name1 = words[1],,, 表示要根据字符串数组的长度
  • 看看我的答案。

标签: java arrays string char


【解决方案1】:

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

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

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

然后做这样的事情 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);
    }
}

就是这样,上面的代码是我自己做的,没有测试过,有什么问题可以追问

【讨论】:

    【解决方案2】:

    我想这就是你要找的:

    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);
    

    【讨论】:

      【解决方案3】:

      恐怕这还没有接近..您执行了代码并查看了它的结果吗?

      1. 不要吹毛求疵,但这很重要:Java 中的变量名以小写字母开头,因此是 cArray 而不是 CArray。为读者节省了很多困惑(它是一个变量吗?它是一个类吗?等等)。

      2. 这条线的目的是什么?为什么不直接使用文字?

        字符串[] 名称 = 单词;

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

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

      也许您打算将第二个循环嵌套到第一个循环的主体中?

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

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

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

      我建议在投入编码之前多学习..

      【讨论】:

      • 是的,当然,我知道单词在函数中的作用更大......!!我实际上希望输出类似于 char[] name = words[0] 和 char[ ] name1 = words[1],,,表示要根据字符串数组的长度自动生成的字符数组的名称..这应该是我的输出..!! char 数组中的动态名称..??
      • 您的意思是,您希望标准输出的格式像 Java 代码一样?为什么? Java 不是动态语言,因此您不能在运行时创建任意动态变量。如果您打算生成 Java 代码然后执行它,则需要先编译它。不确定我是否理解正确!
      【解决方案4】:

      这是一个演示你所问问题的程序:

      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变量中。在那里做任何你想做的事。

      希望对你有帮助。

      【讨论】:

      • 是否可以在循环中给 2 个计数器初始化..??
      • 是的,可以在循环中进行多次初始化,需要用逗号分隔。您甚至可以编写多个用逗号分隔的更新表达式,以及使用 &&、|| 的多个条件运营商。
      • 这是一个例子:for(int i = 0, j = 100; i &lt; 10 &amp;&amp; j &gt; 10; i++, j-=2) { //Do some crazy stuff with i and j }
      猜你喜欢
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      • 2012-09-03
      • 2012-11-04
      • 2011-08-13
      • 2011-06-08
      • 2011-10-16
      相关资源
      最近更新 更多