我的节目刚刚说明了,现在无论我做什么,总是下雨插入

时间:2016-04-08 21:50:10

标签: java

我无法弄清楚我的if else语句有什么问题,告诉它运行哪个语句以及insert语句有什么问题。无论我打字什么,它都会直接插回。

import java.util.*;
import java.io.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.*;
import javax.lang.model.element.*;

public class Node {
  public static Node head;
  static String data;
  static Node next;
  static Node q = new Node("", null);
  static String inputline;
  static int y = 0;
  static int count = 0;
  static Node current = new Node(q.data, q);
  static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

  public static void main(String[] args) {
    BuildList();
  }

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

  public Node(String x, Node n) {
    data = x;
    next = n;
  }

  public static void BuildList() {
    try { //match

      System.out.println("Please Choose A Command To Execute From The Following List:");
      System.out.println("-----------------------------------------------------------");
      System.out.println("$insert");
      System.out.println("$delete m n");
      System.out.println("$print m n");
      System.out.println("$line m");
      System.out.println("$search String");
      System.out.println("$done");
      System.out.println(
          "Please NOTE: m and n are line number parameters for editing and String is a word");
      System.out.println("-----------------------------------------------------------");

      inputline = in.readLine();
      String[] array = inputline.split(" "); //breaks the  command into an array 0,1,2
      while (!array[0].equals("$done")) //each statement tells it which method to run
      {
        if (array[0].equals("$insert")) {
          Insert();
        } else if (array[0].equals("$delete")) {
          Delete();
        } else if (array[0].equals("$print")) {
          Print();
        } else if (array[0].equals("$line")) {
          Line();
        } else if (array[0].equals("$search")) {
          Search();
        } else {
          System.out.println("You have entered an incorrect command");
        }
        System.out.println("Please enter a command");
        inputline = in.readLine();
      }
      System.out.println("The program is done");
    } catch (Exception e) {
      System.out.println("Error --" + e.toString());
    }
  }

  public static void Insert() throws IOException {
    System.out.println(
        "Please Enter The Desired Text (Note: enter $$ when you wish to terminate insert command)");
    while (!inputline.equals("$$")) {
      inputline = in.readLine();
      Node p = new Node(inputline, null);
      q.next = p;
      q = p;
      y++;
    }
  }

  public static void Delete() {
    String[] array = inputline.split(" "); //breaks the command into an array 0,1,2
    q = head.next;
    int lower = Integer.parseInt(array[1]);
    int upper = Integer.parseInt(array[2]);
    lower--;
    if (lower > upper) {
      System.out.println("Wrong, first number must be the smaller line number");
    } else
      for (count = 1; count < y; count++) {
        if (lower <= count) {
          while (lower <= upper) {
            q.next = q.next;
            current = q;
            lower++;
          }
          current = q;
          break;
        } else {
          q = q.next;
        }
      }
  }

  public static void Print() {
    String[] array = inputline.split(" "); //breaks the command into an array 0,1,2
    q = head;
    if (array.length > 1) {
      int lower = Integer.parseInt(array[1]);
      int upper = Integer.parseInt(array[2]);
      if (lower > upper) {
        System.out.println("Wrong, first number must be the smaller line number");
      } else {
        for (count = 1; count <= y; count++) {
          if (lower <= count) {
            while (lower <= upper) {
              System.out.println(q.data);
              q = q.next;
              lower++;
            }
            break;
          } else {
            q = q.next;
          }
        }
      }
    } else {
      while (q != null) {
        System.out.println(q.data);
        q = q.next;
      }
    }
  }

  public static void Line() {
    String[] array = inputline.split(" "); //breaks the command into an array 0,1,2
    q = head.next;
    int line_number = Integer.parseInt(array[1]);
    for (count = 1; count <= y; count++) {
      if (line_number == count) {
        System.out.println(q.data);
        current = q;
        break;
      } else {
        q = q.next;
      }
    }
  }

  public static void Search() {
    String[] array = inputline.split(" "); //breaks the command into an array 0,1,2
    if (data.contains(array[1])) {
      System.out.println(q.data);
    } else if (!data.contains(array[1])) {
      System.out.println("Word Not Found");
    }
  }
}

1 个答案:

答案 0 :(得分:1)

之后

System.out.println("Please enter a command");
inputline = in.readLine();

while循环中,您需要再次将其拆分为数组:

array = inputline.split(" ");

否则你永远不会改变array[0]的价值。