Я собираюсь начать, сказав, что я уже посмотрел на поток под названием «Мне нужно сделать цикл, вводящий пользователя, пока не будет введено« сделано ». Мне не повезло с которые были даны там.Принимается ввод пользователя до тех пор, пока не будет введен <<EOF>>
Описание Я дал моей команде редактирования заключается в следующем:.
«Редактирование текстового файла, если существует В противном случае, создает новый текстовый файл Команда ждет пользователю вводить текст (. должен поддерживать несколько строк текста). Пользователь заканчивает ввод, набрав
<<EOF>>
и нажав enter. "
Сейчас код у меня есть это:
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);
Пожалуйста, покажите весь цикл while while как единый блок. Не показывать разделы не в порядке. –
Откуда вы получаете пользовательский ввод? Кроме того, как вы планируете запустить этот код из командной строки? Вы не можете просто сказать «отредактировать файл stuff.txt» и запустить его в jar и выполнить операции – redFIVE
Я вижу, что у вас есть цикл for, который ничего не делает, этого не должно быть –