2013-04-17 79 views
0

我在LinkList.java中的“curr.names.length() - 1”中出错。 .length是一个错误。我该如何解决?这里还是新的,我不太了解Java。只是觉得我会试一试。这是我得到的代码:在链表上实现气泡排序

SinglyNode.java

public class SinglyNode 
{ 
public Object names; 
public SinglyNode next; 

public SinglyNode (Object name1) 
{ 
    names = name1; 
    next = null; 
} 

public void setNext(SinglyNode next1) 
{ 
    next = next1; 
} 

Object getObject() 
{ 
    return names; 
} 

SinglyNode getNext() 
{ 
    return next; 
} 

void displayLink() 
{ 
    System.out.print("{" + names + "}"); 
} 
} 

LinkList.java的错误是在这里

public class LinkList 
{ 
SinglyNode first; 
SinglyNode last; 

public boolean isEmpty() 
{ 
    return (first == null); 
} 

void insertFirst(Object name1) 
{ 
    SinglyNode newNode1 = new SinglyNode(name1); 
    newNode1.next = first; 
    first = newNode1; 
} 

void display() 
{ 
    SinglyNode current = first; 
    while(current != null) 
    { 
     current.displayLink(); // print data 
     current = current.next; // move to next link 
    } 
    System.out.println("\n"); 
} 

public void bubbleSort() 
{ 
    int length = 0; 
    SinglyNode hold = first; 
    while(true) 
    { 
     if(hold == last) 
     { 
      break; 
     } 
     hold = hold.next; 
     length++; 
    } 
    while(true) 
    { 
     if(length == 0) 
     { 
      break; 
     } 
     int i = 0; 

     SinglyNode curr = first; 
     while(true) 
     { 
      if(i == length) 
      { 
       break; 
      } 
      if(curr.names.charAt(curr.names.length()-1) > 
        curr.next.names.charAt(curr.next.names.length()-1)) 
      { 
       swap(curr); 
      } 
      curr = curr.next; 
      i++; 
     } 
     length--; 
    } 
} 

private void swap(SinglyNode node) 
{ 
    Object temp = node.names; 
    node.names = node.next.names; 
    node.next.names = temp; 
} 
} 

而这里的主类 MainApp.java

ppublic class MainApp 
{ 
public static void main (String args[]) 
{ 
    LinkList list = new LinkList(); 

    list.insertFirst("Squirtle"); 
    list.insertFirst("Bulbasaur"); 
    list.insertFirst("Charmander"); 
    list.insertFirst("Pichu"); 
    list.insertFirst("Ghastly"); 
    list.insertFirst("Mewtwo"); 
    list.insertFirst("Dialga"); 

    System.out.println("LIST: "); 
    list.display(); 

    System.out.println("BUBBLE SORT: "); 
    list.bubbleSort(); 
    list.display(); 

} 
} 
+3

什么是错误?它看起来像'名称'成员是'对象'类型。 'Object'是否有一个叫'length()'的成员?我不认为它:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html – David

回答

0

Object没有length()方法 - 只能使用适当的方法签名在类上调用.length()。你打算这是一个String?如果是,请将您的代码更改为public String names,public SinglyNode(String name1)String getObject()(或String getName()String getString()

+0

我做了,但然后“node.next.names = temp; “在LinkList中出现错误 – lmpgdn

+0

将'Object temp'更改为'String temp'。将所有对象都更改为字符串。如果没有首先投射对象,则不能将对象分配给字符串,例如'node.next.names =(String)temp';然而,在这种情况下,暂时没有理由首先成为对象。 –

+0

好的,我明白了。但是,然后我得到这个错误“线程中的异常”main“java.lang.NullPointerException”它在“if(curr.names.charAt(curr.names.length() - 1)>”行 – lmpgdn