Ich arbeite gerade an meiner eigenen Java-Klasse namens LString, die zwischen verknüpften Listen von Zeichen und Strings hin und her konvertieren soll.Den Kopf von ListNode in Java verfolgen
Ich habe Probleme mit meiner ToString() -Methode, insbesondere verfolgen den "Kopf" der verknüpften Liste, um es durchlaufen und verketten die Zeichen in eine neue Zeichenfolge. Während ich recherchiere, lese ich, dass ich irgendwie den Kopf der Liste verfolgen soll, aber ich kann nicht herausfinden, wie ich es umsetzen soll.
Jede Hilfe würde sehr geschätzt werden!
Edit: Die Fehlermeldung Ich erhalte ist:
LString.java:79: Fehler: kann nicht Symbol
ListNode current = this.front finden;
public class LString{
private static int length;
// ListNode constructors
// Creates a new ListNode with characters stored in variable "data" and
// Node named next
private class ListNode{
char item;
ListNode next;
private ListNode(){
}
// creates a new ListNode that has the value and links to the specified ListNode
private ListNode(char item, ListNode next){
this.item = item;
this.next = next;
}
// given a character, creates a new ListNode that doesn't link to anything
private ListNode(char item){
this.item = item;
this.next = null;
}
}
public LString(){
this.length = 0;
ListNode front = new ListNode();
}
//LString
// Takes in a String object and loops until it has added all characters to a new linked list
public LString(String original){
ListNode front;
this.length = 1; // length keeps track of number of nodes
if (original.charAt(0) == 0){ // creates a new ListNode if it is an empty string
front = new ListNode();
}
else {
front = new ListNode(original.charAt(0));
}
//System.out.println("this is happening " + front.item);
//ListNode current = front;
for (int index = 1; index < original.length(); index++) {
front.next = new ListNode(original.charAt(index), front.next);
front = front.next;
//System.out.println("strings: " + front.item);
length++;
}
//System.out.println("length: " + length);
}
// returns length of the LString object
public int length(){
return this.length;
}
// toString takes an LString object and converts it to a string
public String toString(){
StringBuilder newString;
ListNode current = this.front;
while (current.next != null){
newString.append(current.item);
current = current.next;
}
return newString.toString();
}
public static void main(String[] args){
LString stuffTest = new LString("hello");
int valueOf = stuffTest.length();
System.out.println(stuffTest.length());
String testMeWhy = stuffTest.toString();
}
}
Da Ihre Frage jetzt steht, müssen wir Ihren Code tatsächlich debuggen, um herauszufinden, was falsch ist. Erhalten Sie eine Fehlerausgabe oder können Sie ein bestimmtes Problem angeben? –
Ihr Test für eine leere Zeichenfolge ist falsch. Wenn der String leer ist, wird 'original.charAt (0) == 0' eine Exception werfen, weil kein Zeichen im Index 0 ist. Denken Sie in C? Versuchen Sie 'original.isEmpty()'. – ajb