Java charAt错误:找不到符号

时间:2013-10-29 02:01:12

标签: java string linked-list char copy-constructor

我在为Linked List项目编写构造函数时遇到了问题,似乎无法弄清楚为什么charAt在这种情况下不起作用。我收到一个错误:在charAt的调用中找不到符号。

   //copy
    public Project123(Project123 s){
        this.head = null;
        for (int i = s.length()-1; i>=0; i--){
            head = new charNode (s.charAt(i), head);
            }
        }
   //constructor
    public Project123(String s){
        this.head = null;
        for (int i = s.length()-1; i>=0; i--){
            head = new charNode (s.charAt(i), head);
            }
        }

我似乎与其他相关帖子没有相同的问题。它是小写的,似乎也被正确调用。如果需要更多上下文,我会发布更多内容。

4 个答案:

答案 0 :(得分:1)

在:

  public Project123(Project123 s){
    this.head = null;
    for (int i = s.length()-1; i>=0; i--){
        head = new charNode (s.charAt(i), head);
        }
    }

s.charAt(i)

这里的s不是String,所以你不能在它上面使用String方法 - 不行。

而是在该复制构造函数中,迭代复制节点的节点。如果您打算做深或浅副本,请由您决定。

答案 1 :(得分:0)

s.charAt(i)中的第一个“s”不是String,它是Project123。第二个应该没问题。只需改变:

public Project123(Project123 s){

public Project123(String s){

答案 2 :(得分:0)

您的两个方法实际上是构造函数。首先,s被声明为Project123,而不是String。因此,它没有charAt方法。实际上,您的(新更改的)复制构造函数需要不同的技术来克隆它。获取列表中的每个节点,克隆它,并使用克隆。我不是故意使用Cloneable

哦,将charNode更改为CharNode,然后将Project123更改为CharLinkedList或类似的内容。

答案 3 :(得分:0)

Project123不是String,因此它不会有String方法。

但是你已经重复了自己,无论如何编码很差,所以我会链接我的构造函数:

public Project123(Project123 p) {
    this(p.node.str); // not sure what you've called fields
}

此处假设node是保存值的字段的名称。