2016-03-07 2 views
1

Мне нужна помощь, чтобы этот метод toString прошел тесты внизу. В настоящее время я получаю ошибку (ожидается: < 0:20, 1: [1] 0> но был < 0:20, 1: [2] 0>). addFirst работает на 100%, но я не уверен, что здесь не так.Мне нужна помощь в создании метода toString, который должен пройти определенные тесты, Java

public class LList 
{ 
    public Node head; 
    private int i; 
    private int size; 

public void addFirst(int value) 
{ 
    Node n = new Node(); 
    n.value = value; 
    n.next = head; 
    head = n; 
} 

public void removeFirst() 
{ 
    if (head != null) 
    { 
     // commone case: there is at least one node 
     head = head.next; 
    } 
    else 
    { 
     // no nodes 
     throw new Banana(); 
    } 
} 

public int size() 
{ 
    Node current = head; 
    int count = 0; 
    while(current != null) 
    { 
     count++;     // keep count of nodes 
     current = current.next;  // move to next node 
    } 
    return count; 
} 

public int get(int index) 
{ 
    int count = 0; 
    Node current = head; 
    if (index < 0 || index >= size()) 
    { 
     throw new Banana(); 
    } 
    while(count != index) 
    { 
     count++; 
     current = current.next; 
    } 
    return current.value; 
} 

    public String toString() 
    { 
    String s = ""; 
    Node current = head; 
    //current = head; 

    if (size() == 0) 
    { 
    return s; 
    } 
    else 
    { 
    s = s + "" + i + ":" + current.value; 
    for (int i = 1; i < size(); i++) 
    { 
     s = s + ", " + i + ":" + current.value; 
    } 
    return s; 
    } 
} 


public class Node 
{ 
    public int value; 
    public Node next; 
} 

@Test 
public void testToString() 
{ 
    LList a = new LList(); 
    assertEquals("", a.toString()); 
    a.addFirst(10); 
    assertEquals("0:10", a.toString()); 
    a.addFirst(20); 
    assertEquals("0:20, 1:10", a.toString()); 
    a.addFirst(30); 
    assertEquals("0:30, 1:20, 2:10", a.toString()); 
} 
+0

я думаю, что вы говорите о Java, но вы, вероятно, следует пометить это с реальным языком программирования – johnbakers

+0

@johnbakers, что запамятовал, только что отредактировали. – Slytherus

+0

Возможный дубликат [Need toString для прохождения определенных тестов] (http://stackoverflow.com/questions/32939772/need-tostring-to-pass-certain-tests) – shoover

ответ

0

Вы должны перебирать все Узлы.

Использование while петли для этого, например .:

public String toString() { 
    String s = ""; 
    Node current = head; 
    // current = head; 

    if (size() != 0) { 
     int i = 0; 
     s = s + "" + i + ":" + current.value; 
     while(current.next != null) { 
      i++; 
      current = current.next; 
      s = s + ", " + i + ":" + current.value; 
     } 
    } 
    return s; 
}