【问题标题】:What to use instead of charAt for arraylistarraylist 用什么代替 charAt
【发布时间】:2021-10-29 01:33:05
【问题描述】:

这段代码是获取Arraylist中字符的出现firlast但是charAt不能使用并报错

The method charAt(int) is undefined for the type ArrayList<String>Java(67108964)

int len = firlast.size();
                int count[] = new int[256];

                for(int i = 0; i < len; i++)
                    count[firlast.charAt(i)]++;
                
                char ch[] = new char[firlast.size()];
                for (int i = 0; i < len; i++) {
                    ch[i] = firlast.charAt(i);
                    int find = 0;
                    for (int j = 0; j < i; j++) {
                        if (firlast.charAt(i) == ch[j])
                            find++;
                    }

                    if (find == 1)
                        System.out.println("occurence " + firstlast.charAt(i) + count[firstlast.charAt(i)]);
                }

firlast 数组的输出是[rj, yf, rC, ac, ps, ni, er, et, FT, ei]

我不知道我做错了什么。请指出我哪里做错了。

【问题讨论】:

  • 如果firlast 是引言中所述的ArrayList,那么firlast.charAt(i) 将无法编译。您确定这是您正在执行的确切代码吗? - 如果没有,请参考“如何创建minimal reproducible example?”。
  • 是的,这就是代码。我将这段代码写在一个文本文件中并在 cmd 中编译。只是尝试没有智能感知。现在我用 VS 代码试了一下,现在这个The method charAt(int) is undefined for the type ArrayList&lt;String&gt;Java(67108964)

标签: java arrays arraylist char


【解决方案1】:

ArrayList 上没有 charAt 方法。最接近的是List.get(int),它返回给定位置的列表元素。

但是,在您的示例中,您有一个 ArrayList&lt;String&gt;,因此 get 将返回一个 String 而不是一个字符,并且您不能使用字符串作为数组索引。

不幸的是,我认为这里真正的问题是ArrayList&lt;String&gt; 是这段代码的错误数据结构。更好的选择可能是char[]ArrayList&lt;Character&gt;StringStringBuilder。没有更多的上下文很难说。

【讨论】:

  • 我将 arraylist 更改为 char[] 现在它可以工作了,我得到了所需的输出感谢@Stephen 的澄清
猜你喜欢
  • 2014-12-08
  • 2020-01-04
  • 1970-01-01
  • 2015-09-19
  • 2013-11-04
  • 2018-06-18
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多