2014-09-22 114 views
0

嗨,這是第一次使用本網站回答任何問題,所以在格式錯誤上輕鬆一下,英語也是我的第二語言。因此,對於我的計算機科學課,我們被要求設計一個字符串的鏈表來創建一個字母等字,除了在任何IDE上運行它時,我根本無法找到主類。我還測試了一個不同的簡單hello世界項目,以查看我的IDE是否正在運行,並且您好世界是否有效。此外,如果任何人看到我的代碼有問題,請隨時給我反饋。未找到Java主類

SinglyLinkedListInterface:

public interface SinglyLinkedListInterface<String> 
{ 
    public void print (); 
    public void traversal (); 
    public Node getNext (); 
    public void addStringToFront (String newItem); 
    public void addStringToRear (String newItem); 
    public void addStringToMiddle (Node pos, String newItem); 
    public String deleteFromFront (); 
    public String deleteFromRear (); 
    public String deleteFromMiddle (Node pos); 
    public boolean isEmpty (); 
} 

節點:

public class Node<String> 
{ 
    public String data; 
    public Node link; 

    public Node () 
    { 
     data = null; 
     link = null; 
    } 

    public Node (String newItem) 
    { 
     data = newItem; 
     link = null; 
    } 

    public void setData (String newData) 
    { 
     data = newData; 
    } 

    public void setLink (Node newLink) 
    { 
     link = newLink; 
    } 

    public String getData () 
    { 
     return data; 
    } 

    public Node getLink () 
    { 
     return link; 
    } 

    public java.lang.String toString () 
    { 
     return data.toString (); 
    } 

} 

SinglyLinkedList:

public class SinglyLinkedList<String> implements SinglyLinkedListInterface<String> 
{ 
    private Node head; 
    private Node cursor; 

    public SinglyLinkedList () 
    { 
     head = null; 
     cursor = null; 
    } 

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

    public Node getNext () 
    { 
     if (isEmpty ()) 
      return null; 
     else 
     { 
      if (cursor.getLink () == null) 
       return null; 
      else 
      { 
       cursor = cursor.getLink (); 
       return cursor; 
      } 
     } 
    } 

    private void resetCursor () 
    { 
     cursor = head; 
    } 

    public void traversal () 
    { 
     if (!isEmpty ()) 
     { 
      resetCursor (); 

      System.out.println (cursor); 
      while (getNext () != null) 
       System.out.println (cursor); 
     } 
    } 

    public void print () 
    { 
     traversal (); 
    } 

    public void addStringToFront (String newItem) 
    { 
     Node newNode = new Node (newItem); 
     newNode.setLink (head); 
     head = newNode;  
    } 

    private Node moveStringToRear () 
    { 
     if (cursor != null) //do it only when the list is not empty 
     { 
      while (getNext ()!= null); 
     } 
     return cursor; 
    } 

    public void addStringToRear (String newItem) 
    { 
     if (isEmpty ()) 
      addStringToFront (newItem); 
     else 
     { 
      Node newNode = new Node (newItem); 
      moveStringToRear (); 
      cursor.setLink (newNode); 
     } 
    } 

    private Node backStringrack () 
    { 
     if (cursor != head) 
     { 
      Node temp = head; 
      while (temp.getLink () != cursor) 
       temp = temp.getLink (); 
      cursor = temp; 
      return cursor; 
     } 
     else 
      return null; 
    } 

    //for sorted linked list 
    public void addStringToMiddle (Node pos,String newItem) 
    { 
     Node newNode = new Node (newItem); 
     cursor = pos; 
     backStringrack (); 
     newNode.setLink (pos); 
     cursor.setLink (newNode); 
    } 

    public String deleteFromFront () 
    { 
     String deleted = null; 
     if (!isEmpty ()) 
     { 
      resetCursor (); 
      deleted = (String) cursor.getData (); 
      head = head.getLink (); 
      resetCursor ();     
     } 
     return deleted; 
    } 

    public String deleteFromRear () 
    { 
     String deleted = null; 
     if (!isEmpty ()) 
     { 
      moveStringToRear (); 
      deleted = (String) cursor.getData (); 
      if (backStringrack () != null) 
       cursor.setLink (null); 
      else //the deleted node at rear is the only node in the list 
       head = cursor = null; 
     } 
     return deleted; 
    } 

    //for sorted linked list 
    public String deleteFromMiddle (Node pos) 
    { 
     cursor = pos; 
     backStringrack (); 
     cursor.setLink (pos.getLink ()); 
     return (String)pos.getData (); //corrected 09172014 

    } 

    public Node Search1(String key) 
    { while(getNext()!= null) 
     { 
        if(key.equals(getNext().getData())) 
        { 
         cursor.setLink(head); 
        } 


     } 

    return cursor ; 
    } 



} 

主要:

public class String 
{ 
     public static void main (String [] args) 
    {   
     SinglyLinkedList x = new SinglyLinkedList(); 
     x.addStringToFront("s"); 
     x.addStringToFront("r"); 
     x.addStringToFront("e"); 
     x.addStringToFront("t"); 
     x.addStringToFront("t"); 
     x.addStringToFront("e"); 
     x.addStringToFront("l"); 
     x.print(); 






    } 

} 
+1

你應該輸入主要方法的String參數爲java.lang.String – Hacketo 2014-09-22 07:14:17

回答

3

你不應該叫你的主類String

此外,大多數NoClassDefFound/ClassNotFound可以通過簡單地運行一個乾淨和構建解決。

編輯

的Java指的是通過自己的FQN(完全限定類名)類名,但是內置的語言結構被自動識別(如String - >java.lang.String

如果您需要調用你的類String你將需要通過它們的FQN引用所有基於語言(java)的實例(假設你的String類對所有類都可見,即在類路徑中)

+0

,爲什麼他不應該把它叫做String? – Hacketo 2014-09-22 07:15:49

+0

哇......這個工作很完美,我不明白這是如何工作的,你能詳細說明一下嗎? – user3555946 2014-09-22 07:16:33

+0

因爲這是不好的做法,使用它時應該小心。對於初學者來說,這很可能是OP的問題。 – epoch 2014-09-22 07:16:59

2

將該類的名稱更改爲字符串,以更符合您的需要。 String類是Java的內置類。

2

你有兩個選擇要麼你的類重命名不String或者如果你真的想用String作爲你的類名,然後,在main方法聲明前綴與適當的包名稱的字符串,因爲Java的主要方法需要java.lang.String

類型的數組
public class String 
{ 
    public static void main (java.lang.String [] args) 
    { 


     System.out.println("ran"); 


    } 

} 
0

在java.lang包中定義了一個類'String',它隱式地導入。因此,在使用庫提供的字符串時,您應該使用完全限定的名稱,或者將您的類的名稱更改爲其他名稱。