我对编程和 Java 非常陌生,所以你知道......
我正在开发一个代码/程序框架(学校作业),它具有以下描述,实现并测试命令控制程序的框架,它旨在用于跟踪狗的狗日,程序第一阶段必须接受的命令如下: - 登记新狗 -增加年龄 - 列出狗 -移除狗 -退出
这些命令中唯一应该正确工作的命令是 exit,它应该打印一条程序已终止的消息,然后终止该程序。这必须通过关闭命令行来完成,而不是通过不能使用 System.exit 来完成。 其他命令应该只打印一个简短的文本,告诉您指定了哪个命令。该文本必须包含如上所述的完整命令名称,以便测试程序可以识别它们。一个技巧是还接受其他更短的命令,以便您自己的测试变得更容易。”
非功能性要求之一是除主字符串外不得使用任何静态方法或变量。
因此,我的问题是;如何从程序框架中删除静态方法?我真的很难理解这一点!
import java.util.Scanner;
public class ProgramSkeleton {
static Scanner input = new Scanner(System.in);
public static void initialize() {
System.out.println("Welcome to the dog register!");
System.out.println("Write 0 to register new dog");
System.out.println("Write 1 to increase age");
System.out.println("Write 2 to list dogs");
System.out.println("Write 3 to remove dog");
System.out.println("Write 4 to exit");
}
public static void runCommandLoop() {
boolean done;
do {
String command = readCommand();
done = handleCommand(command);
} while (!done);
}
public static String readCommand() {
System.out.print("> ");
String command = input.nextLine();
return command;
}
private static boolean handleCommand(String command) {
switch (command) {
case "0":
case "register new dog":
System.out.println("You have chosen register new dog.");
return true;
case "1":
case "increase age":
System.out.println("You have chosen increase age.");
return true;
case "2":
case "list dogs":
System.out.println("You have chosen list dogs.");
return true;
case "3":
case "remove dog":
System.out.println("You have chosen remove dog.");
return true;
case "4":
break;
default:
System.out.println("unknown command");
return false;
}
return false;
}
public static void closeDown() {
System.out.println("Goodbye!");
}
public static void main(String[] args) {
initialize();
runCommandLoop();
closeDown();
}
}
最佳答案
而不是调用
initialize();
runCommandLoop();
closeDown();
创建程序骨架的新实例...
ProgramSkeleton skeleton = new ProgramSkeleton();
skeleton.initialize();
skeleton.runCommandLoop();
skeleton.closeDown();
这将允许您从所有其他方法签名中删除 static 关键字,因为它们现在与 ProgramSkeleton 类的实例关联。
关于java - 如何从代码中删除静态方法(以及如何替换它们),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54109304/