2016-04-08 11 views
-2

if文が実行する文と挿入文に間違っていることを伝えるif else文が間違っていることはわかりません。私が何を入力しても、それはまっすぐに元の状態に戻ります。私のプログラムはちょうど私が何をするかにかかわらず、今すぐ行動していると言いました。

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"); 
    } 
    } 
} 
+2

これはすばらしい最小の例です...他のファイルをいくつか追加できますか?私はすべての文脈を持っているかどうかはわかりません。 – DevShark

+0

あなたは 'inputline'を読みました...しかし、あなたはそれをどうしますか? (ヒント: 'array'はどこに' set'がセットされますか?) – FatalError

答えて

1

whileループで

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

した後、再度、配列に分割する必要があります。

array = inputline.split(" "); 

がそうでなければ、あなたが array[0]の値を変更することはありません。

+0

本当にありがとう、私の問題を解決しました。それは、リンクされたリストは実際には形成されておらず、最後に入力したものです。 – Abe

関連する問題