用户输入直到&lt; <eof>&gt;进入

时间:2015-12-08 22:11:24

标签: java

我首先要说的是我已经看过一个名为“我必须循环接受用户输入直到输入完成”的线程“我对那里给出的代码答案没有运气。

我为编辑命令提供的描述是:

  

“编辑文本文件(如果存在)。否则,创建新的文本文件。命令等待用户键入文本(必须支持多行文本)。用户通过键入<<EOF>>结束输入打进去。“

现在我的代码是:

else if (spaceSplit[0].equals("edit")) {
            String name = spaceSplit[1];
            boolean endOfFile = false;
            String content = "";

            while(endOfFile == false){
                String userInput = s.next();
                content += userInput;
                if(content.contains("<<EOF>>")){
                    endOfFile = true;
                }
            }

            FileSystem.edit(name, content);


        }

没有错误,但我的else语句打印出来。我的else语句代码是这样的:

else {
            System.out.println("That is not a command. Please try again.");
        }

什么也是时髦的是程序遍历整个do while loop然后打印其他。我知道这是因为打印的内容是:$That is not a commond. Please try again.

以下是do while loop的开头:

do {

        System.out.print("$");

        String input = s.nextLine();
        input = input.toLowerCase();
        spaceSplit = input.split(" ");

相当令人困惑。我的edit(String name, String content)函数如下:

public static void edit(String name, String content){
    for(int i = 0; i < texts.size(); i++){
        if(texts.get(i).getName().equals(name)){
            texts.get(i).setContent(content);
        } else {
            texts.add(new TextFile(name,content));

            for(int j = 0; j < directories.size(); j++){
                if(directories.get(j).getName().equals(wDir.getName())){
                    texts.get(texts.size() - 1).setParent(directories.get(j));
                    System.out.println("The parent of " + name + " is " + directories.get(j).getName());
                }
            }
        }
    }
}

正如您所看到的,我已经在edit(name,content)方法的末尾检查了一下,通过打印出文本文件的父目录来检查文件是否正确创建。

这是我调用编辑命令后我的程序应该运行的方式:

$mkdir d
$cd d
$edit stuff.txt
Hello everyone, this is just an example!<<EOF>>
The parent of stuff.txt is d
$exit
Good Bye!

非常感谢提供的任何帮助。

以下是整个do while loop

do {

        System.out.print("$");

        String input = s.nextLine();
        input = input.toLowerCase();
        spaceSplit = input.split(" ");

        if (spaceSplit[0].equals("mkdir")) {
            if (spaceSplit[1].equals("-p")) {
                for (int i = 3; i < spaceSplit.length; i++) {

                }
            } else if (spaceSplit[1].contains("/")){
                    //This method will create a directory farther down the tree like creating c in a/b/c
                    String[] dirSplit = spaceSplit[1].split("/");
                    int length = dirSplit.length;

                    FileSystem.mkdir(dirSplit[length-1]);
                    int directoriesLength = FileSystem.directories.size();

                    for(int i = 0; i < FileSystem.directories.size(); i++){
                        if(dirSplit[length-2].equals(FileSystem.directories.get(i))){
                            FileSystem.directories.get(i).addChild(FileSystem.directories.get(directoriesLength-1));
                            //Checking if this works
                            System.out.println("The child was created succesfully");
                        }
                    }

            } else {
                for (int i = 1; i < spaceSplit.length; i++) {
                    FileSystem.mkdir(spaceSplit[i]);
                }
            }

        } else if (spaceSplit[0].equals("cd")) {
            FileSystem.cd(spaceSplit[1]);
        } else if (spaceSplit[0].equals("pwd")) {
            FileSystem.pwd();
        } else if (spaceSplit[0].equals("ls")) {

        } else if (spaceSplit[0].equals("edit")) {
            String name = spaceSplit[1];
            boolean endOfFile = false;
            String content = "";

            while(endOfFile == false){
                String userInput = s.next();
                content += userInput;
                if(content.contains("<<EOF>>")){
                    endOfFile = true;
                }
            }

            FileSystem.edit(name, content);


        } else if (spaceSplit[0].equals("cat")) {
            for(int i = 1; i < spaceSplit.length; i++){
                FileSystem.cat(spaceSplit[i]);
            }
        } else if (spaceSplit[0].equals("updatedb")) {

        } else if (spaceSplit[0].equals("locate")) {

        } else if (spaceSplit[0].equals("exit")) {
                exitProg = true;
                System.out.println("Good bye!");
        } else {
            System.out.println("That is not a command. Please try again.");
        }

    } while (exitProg == false);

1 个答案:

答案 0 :(得分:0)

好吧,我想我会在这里回答我自己的问题。现在一切都很完美。

else if (spaceSplit[0].equals("edit")) {
            if(spaceSplit.length > 1) {
                String name = spaceSplit[1];
                boolean endOfFile = false;
                String content = "";

                while (!(content.contains("<<EOF>>"))) {
                    String userInput = s.nextLine();
                    content += userInput + " ";
                }

                String end = "<<EOF>>";

                content = content.replace(end, "");

                int size = tree.getTexts().size();

                if (size != 0) {
                    for (int i = 0; i < size; i++) {
                        if (tree.getTexts().get(i).getName().equals(name)) {
                            tree.getTexts().get(i).setContent(content);
                        } 
                    }
                    tree.edit(name, content);
                } else {
                    tree.edit(name, content);
                }
            }

        }