Я вообще не могу понять, где у меня что-то не так, я проверял и перепроверил мой метод add (int index, T obj) бесчисленное количество раз, все еще получая ту же ошибку. Вот мой код, любые указатели будут с благодарностью; эта проблема задержала мой проект на день или около того, по крайней мере, сейчас.
package edu.neumont.csc250;
class LinkedList<T> implements List<T>{
Node<T> head;
Node<T> tail;
int listCount;
public LinkedList(){
head = null;
listCount = 0;
}
@Override
public T get(int index) throws IllegalArgumentException {
if(index > size() - 1 || index < 0){
throw new IllegalArgumentException();
}
else{
Node<T> current = head;
for(int i = 0; i < index; i++)
{
current = current.next;
}
if(current.content != null){
return current.content;
}
else{
System.out.println("Null value.");
return null;
}
}
}
@Override
public void add(T obj) {
if(head == null){
head = new Node<T>(obj);
head.next = null;
tail = head;
listCount++;
}
else{
if(head.next == null){
head.next = new Node<T>(obj);
//head.next.next = null;
tail = head.next;
tail.prev = head;
listCount++;
}
else{
tail.next = new Node<T>(obj);
tail.next.prev = tail;
tail = tail.next;
tail.next = null;
listCount++;
}
}
}
@Override
public void add(int index, T obj) throws IllegalArgumentException {
// TODO Auto-generated method stub
Node<T> temp = new Node(obj);
Node<T> current = head;
for(int i = 0; i<=index; i++){
current = current.next;
}
temp.prev = current.prev;
current.prev = temp;
current.prev.next = current;
if(index == 0){
head = current.prev;
}
else if(index == size()+1){
tail = current.next;
}
listCount++;
}
@Override
public void replace(int index, T obj) throws IllegalArgumentException {
// TODO Auto-generated method stub
if(index > size() - 1 || index < 0){
throw new IllegalArgumentException();
}
else{
//get(index)
}
}
@Override
public T remove() {
head = head.next;
listCount--;
return null;
}
@Override
public T remove(int index) throws IllegalArgumentException {
// TODO Auto-generated method stub
if(index > size() - 1 || index < 0){
throw new IllegalArgumentException();
}
else{
listCount--;
}
return null;
}
@Override
public int size() {
return listCount;
}
public static void main(String[] args){
LinkedList<String> list = new LinkedList<String>();
list.add("Red");
list.add("Orange");
list.add("Yellow");
list.add("Green");
list.add("Blue");
list.add("Purple");
for(int a = 0; a < list.size(); a++){
System.out.println(list.get(a));
}
// System.out.println(list.get(0).toString());
// System.out.println(list.get(1).toString());
// System.out.println(list.get(2).toString());
// System.out.println(list.get(3).toString());
// System.out.println(list.get(4).toString());
// System.out.println(list.get(5).toString());
System.out.println("There are " + list.size() + " colors in the list.");
list.remove();
for(int b = 0; b < list.size(); b++){
System.out.println(list.get(b));
}
// System.out.println(list.get(0).toString());
// System.out.println(list.get(1).toString());
// System.out.println(list.get(2).toString());
// System.out.println(list.get(3).toString());
// System.out.println(list.get(4).toString());
//System.out.println(list.get(5));
System.out.println("There are " + list.size() + " colors in the list.");
list.add(0, "Red");
System.out.println(list.size());
for(int c = 0; c < list.size(); c++){
System.out.println(list.get(c));
}
// System.out.println(list.get(0).toString());
// System.out.println(list.get(1).toString());
// System.out.println(list.get(2).toString());
// System.out.println(list.get(3).toString());
// System.out.println(list.get(4).toString());
// System.out.println(list.get(5).toString());
System.out.println("There are " + list.size() + " colors in the list.");
}
class Node<T>{
T content;
Node<T> next;
Node<T> prev;
public Node(T content){
this.content = content;
}
public T getContents(){
return content;
}
public void printNode() {
System.out.print("{" + content + "} ");
}
}
}
Вот мое показание консоли, если это поможет:
Красный
оранжевый
желтый
зеленый
синий
Пурпурный
В списке 6 цветов.
оранжевый
желтый
зеленый
синий
Пурпурный
В списке 5 цветов.
6
красный
желтый
зеленый
синий
Пурпурный
Исключение в теме "главная"
java.lang.NullPointerException в
edu.neumont.csc250.LinkedList.get (LinkedList.java:26) в
edu.neumont.csc250.LinkedList.main (LinkedList.java:161)
РЕДАКТИРОВАТЬ: основной метод изолирован, как требуется:
public static void main(String[] args){
LinkedList<String> list = new LinkedList<String>();
list.add("Red");
list.add("Orange");
list.add("Yellow");
list.add("Green");
list.add("Blue");
list.add("Purple");
for(int a = 0; a < list.size(); a++){
System.out.println(list.get(a));
}
// System.out.println(list.get(0).toString());
// System.out.println(list.get(1).toString());
// System.out.println(list.get(2).toString());
// System.out.println(list.get(3).toString());
// System.out.println(list.get(4).toString());
// System.out.println(list.get(5).toString());
System.out.println("There are " + list.size() + " colors in the list.");
list.remove();
for(int b = 0; b < list.size(); b++){
System.out.println(list.get(b));
}
// System.out.println(list.get(0).toString());
// System.out.println(list.get(1).toString());
// System.out.println(list.get(2).toString());
// System.out.println(list.get(3).toString());
// System.out.println(list.get(4).toString());
//System.out.println(list.get(5));
System.out.println("There are " + list.size() + " colors in the list.");
list.add(0, "Red");
System.out.println(list.size());
for(int c = 0; c < list.size(); c++){
System.out.println(list.get(c));
}
// System.out.println(list.get(0).toString());
// System.out.println(list.get(1).toString());
// System.out.println(list.get(2).toString());
// System.out.println(list.get(3).toString());
// System.out.println(list.get(4).toString());
// System.out.println(list.get(5).toString());
System.out.println("There are " + list.size() + " colors in the list.");
}