我正在尝试编写一个方法来将名为lstring的指定字符串连接到此lstring的末尾。我现在的问题是我所需的返回类型与我用来执行递归函数的类型不同。
这是一个链接列表类(LString),它调用并引用另一个类(Node)。我们将专门使用此方法标题:public LString concat(LString lstr)
如何更正连接方法以便我可以接受所需的LString类型?
这是我尝试过的方法:
public LString concat(LString lstr){
if(front == null){
return this;
}
LString lstr2 = new LString();
return front.toString() + concat(front.getNext());
}
以下是我班级的相关代码:
public class LString{
private Node front = null; //first val in list
private Node back; //last val in list
private int size = 0;
private int i;
public LString(){
//construct empty list
Node LString = new Node();
front = null;
}
public String toString(){
if(front == null){
return "[]";
} else {
String result = "[" + front.data;
Node current = front.next;
while(current != null){
result += current.data; //might need to add ", page 967
current = current.next;
}
result += "]";
return result;
}
}
我的Node类(单链接节点):
public class Node{
public char data;
public Node next;
//constructors from page 956
public Node()
{
this('\0',null); //'\0' is null char for java
}
public Node(char initialData, Node initialNext)
{
data = initialData;
next = initialNext;
}
如果我能提供更多信息以帮助澄清问题,请告诉我。
同样来自http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#trim() 将指定的字符串连接到此字符串的末尾。 如果参数字符串的长度为0,则返回此String对象。否则,将创建一个新的String对象,表示一个字符序列,该字符序列是此String对象表示的字符序列与参数字符串表示的字符序列的串联。 例子: “关心”.concat(“s”)返回“爱抚” “to”.concat(“get”)。concat(“她”)返回“在一起”
答案 0 :(得分:1)
行return current.data + concat(current.next) + this;
似乎是您的代码失败的地方,但您没有提供包含该行的任何代码。因此,很难说出那里到底出了什么问题。但是,通过仅查看该行:您尝试返回的不是单个类型元素,而是返回不同onces的集合。
current.data是char
concat是LString
而this
是你当时正在使用的任何对象。
你正试图将它们加在一起。