【问题标题】:Java - method that allows the user to add a node to a linked listJava - 允许用户将节点添加到链表的方法
【发布时间】:2016-05-02 02:55:46
【问题描述】:

我想要输出的内容:

水星 金星 地球 火星 木星 土星 天王星 海王星

发现了第九颗行星!它叫什么名字?:冥王星

你想炸掉哪个星球?:水星

金星 地球 火星 木星 土星 天王星 海王星 冥王星

问题: 任何人都可以引导我朝着正确的方向前进,如何修复我被注释掉的方法 addNode?是的,我知道这是完全错误的。

类 NodePlanets.java

import java.util.Scanner;

public class NodePlanets
{
   public static void main(String[] args)
   {
      Node p, q, r;

      p = new Node("Mercury");
      q = p;

      r = new Node("Venus");
      q.next = r;
      q = r;

      r = new Node("Earth");
      q.next = r;
      q = r;

      r = new Node("Mars");
      q.next = r;
      q = r;

      r = new Node("Jupiter");
      q.next = r;
      q = r;

      r = new Node("Saturn");
      q.next = r;
      q = r;

      r = new Node("Uranus");
      q.next = r;
      q = r;

      r = new Node("Neptune");
      q.next = r;
      q = r;

      System.out.println(printLinkedListNodes(p));
      //addNode(p);
      System.out.println(printLinkedListNodes(p));
      removeNode(p);
      System.out.println(printLinkedListNodes(p));
   }//end main

   public static String printLinkedListNodes(Node nodePassed)
   {
      if(nodePassed.next == null)
         return nodePassed.data;
      else
         return nodePassed.data + " " + printLinkedListNodes(nodePassed.next);
   }//end method

/*

   public static void addNode(Node list, String userInput)
   {
      Scanner ui = new Scanner(System.in);
      System.out.println("A ninth planet has been found! What is it's name?");
      userInput = ui.nextLine();
      Node prev = null;
      Node curr = list;
      while (curr != null)
      {  
         prev = curr;
         curr = curr.getNext();
      }
      prev.setNext(new Node(userInput,null)); 
   }//end method   

*/

   public static Node removeNode(Node nodePassed)
   {
      Scanner ui = new Scanner(System.in);
      String userInput;
      System.out.println("Which Planet do you wish to blow up?");
      userInput = ui.nextLine();
      Node currentNode = nodePassed;
      Node temp;
      if(userInput.equalsIgnoreCase(currentNode.data))
      return currentNode.next; 
      while(currentNode.next!=null)
      {
         temp = currentNode.next.next;
         if(userInput.equalsIgnoreCase(currentNode.next.data))
         {
            currentNode.next = temp;
            return nodePassed;
         }
         currentNode = currentNode.next;
      }//endwhile
      return nodePassed;
   }//end method

}//end class

类 Node.java

public class Node
{
   public String data;
   public  Node next;

   public Node()
   {
      data = "";
      next = null;
   }//end method

   public Node(String s)
   {
      data = s;
      next = null;
   }//end methodC

   public String toString()
   {
      return "Data:" + data;
   }//end method

}//end class

【问题讨论】:

  • 首先,你永远不应该在方法内部接受输入。这应该在你的主课中完成。

标签: java linked-list


【解决方案1】:

这个方法绝对不应该是调用客户端的一部分,而应该是 Node 类的一部分。尽管如此,这应该会让你继续前进。

  public static void addNode(Node list)
       {
          Scanner ui = new Scanner(System.in);
          System.out.println("A ninth planet has been found! What is it's name?");
          String userInput = ui.nextLine();

          Node curr = list;
          while (cur.next != null)
          {  
             curr = curr.getNext();
          }
          curr.setNext(new Node(userInput, null));

       }//end method   

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2022-01-05
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    相关资源
    最近更新 更多