好的我正在构建这个电子表格应用程序,我正在通过命令行界面实现,我有一些命令,例如exit,它终止程序。
所以我有这个应用程序类,我有这些字段:
private ArrayList<Spreadsheet> spreadsheets;
private Spreadsheet worksheet;
和这个方法:
public void newSpreadsheet() {
worksheet = new Spreadsheet();
spreadsheets.add(worksheet);
}
然后我有这个看起来像这样的CommandIntepreter类:
package ui;
import java.util.Scanner;
import java.util.InputMismatchException;
import java.util.NoSuchElementException;
import ui.command.Command;
import ui.command.ExitCommand;
import ui.command.FailedCommand;
import ui.command.PrintCommand;
import ui.command.NewCommand;
import ui.command.ListCommand;
import ui.command.ChangeCommand;
import ui.command.SetCommand;
import ui.command.GetCommand;
import spreadsheet.*;
import spreadsheet.arithmetic.*;
public final class CommandInterpreter {
private CommandInterpreter() {
// The class should not be instanciated.
}
public static Command interpret(final Scanner scanner) {
final String keyword = scanner.next();
switch(keyword) {
case "exit":
return new ExitCommand();
case "pws":
return new PrintCommand();
case "ns":
return new NewCommand();
case "ls":
return new ListCommand();
case "cws":
return new ChangeCommand();
case "set":
return new SetCommand();
case "get":
return new GetCommand();
}
return new FailedCommand(
String.format("Illegal start of command, \"%s\".", keyword));
}
}
然后我创建了NewCommand类,如下所示:
package ui.command;
import spreadsheet.Application;
import spreadsheet.Spreadsheet;
public final class NewCommand
extends Command {
public void execute() {
Application.instance.newSpreadsheet();
}
}
当我写ns时应该制作一个新的电子表格。但是当我这样做时,没有什么事情发生,所以你能告诉我为什么会这样吗?
答案 0 :(得分:0)
您必须调用NewCommand类的execute方法才能创建新的电子表格。我没有在你的代码中看到你做到的任何地方。
在此之前,我相信您正在尝试在此应用程序中使用Command Pattern。我建议你创建一个名为'Command'的接口,并使用'execute()'方法,然后在所有类中实现Command接口。如果您发现'ns'为命令行输入,则只需为New Command创建实例
case "ns":
Command nsCommand = new NewCommand();
nsCOmmand.execute();
return "SOME_MESSAGE"