我在为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);
}
}
我似乎与其他相关帖子没有相同的问题。它是小写的,似乎也被正确调用。如果需要更多上下文,我会发布更多内容。
答案 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
是保存值的字段的名称。