Java LinkedList不是';不接受输入
我似乎在向链表中插入值时遇到了一些问题。我试图为约瑟夫问题创建一个程序,我假设从用户那里获取3个数字。第一个数字是有多少“人”,如果是4,你会有一个1,2,3,4的列表。这就是我被困的地方。每次我输入3个整数,我的程序都会返回,说列表是空的,我不知道为什么。如果有人能帮忙解释,我们将不胜感激,谢谢 MainJava LinkedList不是';不接受输入,java,linked-list,Java,Linked List,我似乎在向链表中插入值时遇到了一些问题。我试图为约瑟夫问题创建一个程序,我假设从用户那里获取3个数字。第一个数字是有多少“人”,如果是4,你会有一个1,2,3,4的列表。这就是我被困的地方。每次我输入3个整数,我的程序都会返回,说列表是空的,我不知道为什么。如果有人能帮忙解释,我们将不胜感激,谢谢 Main public static void main(String[] args) { Scanner input = new Scanner(Syste
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
long[] numbers = new long[3];
LinkedList circle = new LinkedList();
System.out.println("Please enter 3 numbers");
for (int i = 0; i < 3; i++)
{
numbers[i] = input.nextLong();
}
for (int i = 0; i < numbers[0]; i++)
{
circle.insertLink();
circle.move();
}
circle.getCurrent();
}
链接列表
class LinkedList
{
private Link current;
private int id;
public LinkedList()
{
current = null;
id = 1;
}
public void move()
{
current = current.next;
}
public boolean isEmpty()
{
if(current == null)
System.out.println("The List is empty");
return current == null;
}
public Link getCurrent()
{
return current;
}
public void setCurrent(int id)
{
while(current.dData != id)
move();
}
public Link getNext()
{
return current.next;
}
public void insertLink()
{
if(!isEmpty())
{
Link newlink = new Link(id++, current.next);
current.next = newlink;
}
else
{
Link newlink = new Link(id++);
newlink.next = newlink;
current = newlink;
}
}
public Link deleteLink()
{
Link temp = current.next;
if(current != current.next)
current.next = current.next.next;
else
current = null;
return temp;
}
}
当您第一次调用
insertLink()
methodos时,您总是会得到列表为空
print。因为在初始化时,链表类的当前
变量为空。只需删除System.out.println(“列表为空”)代码>来自您的代码
public boolean isEmpty()
{
return current == null;
}
重写toString()
方法以查看列表您从用户处获取三个输入,并使用数字数组的第一个元素进行迭代,我认为应该是这样的
for (int i = 0; i < numbers.length; i++)
{
circle.insertLink();
circle.move();
}
circle.getCurrent()是否返回null?@noshusan这里是一个示例运行“请输入3个数字| 5 4 3 |列表为空”@WCC96这似乎是正常的,第一次调用isEmpty
(在insertLink
中)它将打印该字符串,但这并不意味着列表最终是空的empty@LorisSecuro嗯,我明白了。我如何让它显示列表中的所有数字?例如,如果我输入5,我将如何让它显示,12345。我会一步一步地做,确保我有物理证据证明我想要的事情已经完成。在删除System.out.println(“列表为空”)之后,我会不断得到“error:missing return statement”;这就是我想做的。用户提交的3个数字做了不同的事情。第一个数字是列表的大小。第二个数字是开始计数的地方。第三个是它在列表中统计的数字,当它达到该数字时,它将删除该数字。
for (int i = 0; i < numbers.length; i++)
{
circle.insertLink();
circle.move();
}
System.out.println("The List is empty");