2014-03-04 52 views
0

使用BlueJ,並且仍然是Java的新手。當我運行我的測試時,我遇到了問題,它回來說「沒有異常消息」。我不知道在哪裏查看我的代碼來解決這個問題。所以這是我到目前爲止有:Java:無異常消息錯誤

主要類

public class LList<X> 
{ 
    private Node<X> head; 
    private int length = 0; 

public int size() 
{ 
    return length; 
} 

public void add(X item) 
{ 
    Node a = new Node(); 
    a.setValue(item); 
    a.setLink(head); 
    head = a; 
    length ++; 
} 

public X get(int index) 
    { 
     X holder = null; 
     Node<X> h = head; 
     if(index > length) 
     { 
      throw new IndexOutOfBoundsException(); 
     } 
     else 
     { 
      for(int i = 0; i < index + 1; i++) 
      { 
       h = h.getLink(); 
       holder = h.getValue(); 
      } 
      return holder; 
     } 

    } 
} 

下一個類

public class Node<X> 
{ 
    private X value; 
    private Node link; 

    public X getValue() 
    { 
     return value; 
    } 

    public void setValue(X v) 
    { 
     value = v; 
    } 

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

    public Node getLink() 
    { 
     return link; 
    }  
} 

測試類

import static org.junit.Assert.*; 
import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
public class LListTest 


@Test 
    public void testGet() 
    { 
     LList x = new <String>LList(); 
     x.add("hi"); 
     assertEquals("hi", x.get(0)); 
     x.add("1hi"); 
     assertEquals("hi", x.get(1)); 
     assertEquals("1hi", x.get(0)); 
     x.add("2hi"); 
     assertEquals("hi", x.get(2)); 
     assertEquals("1hi", x.get(1)); 
     assertEquals("2hi", x.get(0)); 
     x.add("3hi"); 
     assertEquals("hi", x.get(3)); 
     assertEquals("1hi", x.get(2)); 
     assertEquals("2hi", x.get(1)); 
     assertEquals("3hi", x.get(0)); 
     x.add("4hi"); 
     assertEquals("hi", x.get(4)); 
     assertEquals("1hi", x.get(3)); 
     assertEquals("2hi", x.get(2)); 
     assertEquals("3hi", x.get(1)); 
     assertEquals("4hi", x.get(0)); 
    } 

如果有任何想法,我會非常感謝它是否解釋了我的代碼中問題所在,或者解釋爲什麼即時通知錯誤會很棒。

回答

1

當您嘗試訪問無效的指數,你拋出一個異常:

throw new IndexOutOfBoundsException(); 

沒有任何消息。所以,包含在這個異常消息將是null。然後將下面的assertEquals()電話:

assertEquals("hi", x.get(4)); 

也將失敗,x.get(4)會拋出異常,但消息會null

+0

我該如何解決它,所以我沒有回來與空? – Hovering

+0

@Hovering首先,爲什麼要測試一個無效索引上的'assertEquals()'?你知道這將拋出一個異常,並且既然你期望,你應該斷言異常。 –

+0

在更改String中的代碼之前,我使用了相同的測試代碼,並且所有內容都按預期工作。我沒有改變測試課中的任何內容,並返回錯誤?爲什麼會這樣做? – Hovering