Java 如何添加行编辑器命令?

Java 如何添加行编辑器命令?,java,Java,我需要帮助用Java编写一个程序,该程序模拟一个支持以下操作的简单行编辑器: $insert 随后的每一行,直到下一行编辑器命令,都将插入到文本中。如果存在指定的当前行,则每一行将插入该当前行之前。否则,将在文本末尾插入每一行 $delete m n 文本中m行和n行(包括)之间的每一行都将被删除 到目前为止,我开始我的计划如下: 它允许我询问用户想要输入哪一行,并使用链接列表方法添加行,我相信,现在我不确定下一步该怎么做。任何帮助都将不胜感激 我还必须遵守某些限制: 检查是否有错误的命令

我需要帮助用Java编写一个程序,该程序模拟一个支持以下操作的简单行编辑器:

$insert
随后的每一行,直到下一行编辑器命令,都将插入到文本中。如果存在指定的当前行,则每一行将插入该当前行之前。否则,将在文本末尾插入每一行

$delete m n
文本中m行和n行(包括)之间的每一行都将被删除

到目前为止,我开始我的计划如下:

它允许我询问用户想要输入哪一行,并使用链接列表方法添加行,我相信,现在我不确定下一步该怎么做。任何帮助都将不胜感激

我还必须遵守某些限制:

  • 检查是否有错误的命令及其参数,并显示相应的消息。例如,如果文本中没有第10行,用户键入第10行,则应显示错误消息

  • 使用链接列表存储用户提供的所有文本。此简化行编辑器的所有命令都以$符号开头

  • 如果命令的语法不正确,请显示错误消息并让用户重试

  • 收到insert命令后,如果下一行的第一个字母不是$symbol,则将其视为一行文本,并将其存储在链接列表的节点中。如果需要,使用StringTokenizer逐字处理一行文本

  • 收到命令或文本行后,始终显示消息“请输入命令或文本行”。始终在显示的文本中指示当前行。默认的当前行是第一行,第一行编号为第1行

  • 不能使用内置列表包


导入java.io。; 导入java.util

公共课程4 { 公共静态节点头;//这是我

public class Node                //from ppt
{
    String data;
    Node next;

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

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


public void BuildList()                    //from ptt
{
    int line_no=1;
    Node q = new Node("",null);
    head=q;
    String oneLine;
    try
    {
        BufferedReader indata = new BufferedReader(new InputStreamReader(System.in));                   //read data from terminal
        System.out.println("Please Choose a Command From the 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("NOTE: m and n are line number parameters and string is a word you wish to search for");
        System.out.println();
        System.out.println("---------------------------------------------------------");
        oneLine=indata.readLine();
        int x=0;
        while(!oneLine.equals("$done"))
        {
            String[] array=oneLine.split(" ");                 //breaks the command into an array 0,1,2
            if(array[0].equals("$insert"))
            {

                System.out.println("Please Enter Your Text (Enter $ if you wish to terminate)");
                oneLine=indata.readLine();
                while(!oneLine.equals("$"))
                {
                    String line_number = String.valueOf(line_no);                        
                    Node p = new Node(line_number +" " + oneLine, null);
                    q.next=p;
                    q=p;
                    line_no++;
                    x++;
                    oneLine=indata.readLine();
                }
            }
            else if(array[0].equals("$delete"))
            {
                q=head.next;
                Node z = new Node(q.data,q);
                for(int i=1; i<x; i++)
                {
                    String[] line=q.data.split(" ");
                    int lower_bound=Integer.parseInt(array[1]);
                    int lower_bound_2=Integer.parseInt(line[1]);
                    if(lower_bound==(lower_bound_2+1))
                    {
                         z=q;

                         break;
                    }
                    else
                    {
                        q=q.next;
                    }
                }
                for(int i=1; i<x;i++)
                {

                    String[] line=q.data.split(" ");
                    if(line[0].equals(array[2]))
                    {
                        z.next=q.next;
                        break;
                    }
                    else
                    {
                        q=q.next;
                    }
                }


                    //System.out.println(z.next.data);
            }
            else if(array[0].equals("$print"))
            {
                q=head.next;
                if(array.length>1)
                {
                    int lower_bound = Integer.parseInt(array[1]);
                    int upper_bound = Integer.parseInt(array[2]);
                    for(int i=1;i<=x;i++)
                    {
                        String[] line=q.data.split(" ");
                        if(line[0].equals(array[1]))
                        {

                            while(lower_bound<=upper_bound)
                            {
                                System.out.println(q.data);
                                q=q.next;
                                lower_bound++;

                            }
                            break;
                        }
                        else
                        {
                            q=q.next;
                        }
                }

                }
                else
                {
                    while(q!=null)
                    {
                        System.out.println(q.data);
                        q=q.next;      
                    }          
                }






                //see if the first array[0] is equal to m 
                //if it is print it out from m to n by creating a variable and doing n-m
                //else q=q.next and run look again until q=!=null

            }
            else if(oneLine.equals("$line"))
            {
                System.out.println("This portion is working");
            //code here for current line
            }
            else if(array[0].equals("$search"))
            {
                System.out.println("This portion is working");
                //code here for search string
            }
            else
            {
                System.out.println("You have entered an incorrect command");
                System.out.println("Please re-enter your Command");
            }
            System.out.println("Please enter your next command");
            oneLine=indata.readLine();

        }
        System.out.println("The program is done");

    }        
    catch(Exception e)
    {
        System.out.println("Error --" + e.toString());
    }
}

public static void main(String[] args) 
{
   Program_4 mylist = new Program_4();
   mylist.BuildList();
  // mylist.print_list(head);  
公共类节点//来自ppt
{
字符串数据;
节点下一步;
公共节点()
{
数据=”;
next=null;
}
公共节点(字符串x,节点n)
{
数据=x;
next=n;
}
}
public void BuildList()//来自ptt
{
int line_no=1;
节点q=新节点(“,null);
水头=q;
字符串单线;
尝试
{
BufferedReader indata=新的BufferedReader(新的InputStreamReader(System.in));//从终端读取数据
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”);
系统输出打印项次($done);
System.out.println(“注意:m和n是行号参数,string是您希望搜索的单词”);
System.out.println();
System.out.println(“------------------------------------------------------------------”;
oneLine=indata.readLine();
int x=0;
而(!oneLine.equals($done)))
{
String[]array=oneLine.split(“”;//将命令拆分为数组0,1,2
if(数组[0]。等于(“$insert”))
{
System.out.println(“请输入您的文本(如果您希望终止,请输入$”);
oneLine=indata.readLine();
而(!oneLine.equals($))
{
字符串行号=String.valueOf(行号);
节点p=新节点(行号+“”+单行,空);
q、 next=p;
q=p;
行_no++;
x++;
oneLine=indata.readLine();
}
}
else if(数组[0]。等于($delete))
{
q=头。下一个;
节点z=新节点(q.data,q);

对于(int i=1;i您需要什么帮助?请提出一些具体问题,让我们了解您遇到的问题。如果我们不知道问题是什么,我们就无法解决问题。@pinoyyid我需要帮助更正java代码,这样我就可以从用户将输入到文件中的内容中删除某些行。我可以修改代码以提供更多帮助,但我仍然需要帮助我被卡住了。例如,如果我写了以下3行:您好。您好。我做得很好。如果用户键入$delete 2,那么程序将删除第二行,输出结果将显示:您好。我做得很好。@Daemon我编辑了更多代码,以帮助解决我在本文上方发布的特定问题。请让我回答知道你是否需要进一步的澄清。我想这个问题应该在freeloper.com上