Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LinkedList不是';不接受输入_Java_Linked List - Fatal编程技术网

Java LinkedList不是';不接受输入

Java 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

我似乎在向链表中插入值时遇到了一些问题。我试图为约瑟夫问题创建一个程序,我假设从用户那里获取3个数字。第一个数字是有多少“人”,如果是4,你会有一个1,2,3,4的列表。这就是我被困的地方。每次我输入3个整数,我的程序都会返回,说列表是空的,我不知道为什么。如果有人能帮忙解释,我们将不胜感激,谢谢

Main

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");