晚上,我正在为uni做一个项目,发现自己有点大惊小怪。我的命令解释器遇到问题。我可以运行代码,但是不幸的是它没有正确读取我的输入。有人能指出我正确的方向去解决错误吗?下面的代码如下,忽略注释和其他支持类的实例。任何帮助,将不胜感激。预先感谢!
import java.util.Scanner;
public class Main {
//Constantes que definem os comandos
public static final String REGISTER = "register";
public static final String LISTUSERS = "listusers";
public static final String UPLOAD = "upload";
public static final String READ = "read";
public static final String WRITE = "write";
public static final String GRANT = "grant";
public static final String REVOKE = "revoke";
public static final String USERDOCS = "userdocs";
public static final String TOPLEAKED = "topleaked";
public static final String TOPGRANTERS = "topgranters";
public static final String HELP = "help";
public static final String EXIT = "exit";
//Constantes que definem as mensagens para o utilizador
public static final String EXIT_COMM = "Bye!";
public static final String REGISTER_COMM = " was registered.";
public static final String ALREADY_REG_ERROR = " is already assigned to another user.";
public static final String NO_LIST_USERS = "There are no registered users.";
public static final String DOC_UPLOADED = " was uploaded.";
public static final String OFFICIAL_DOC = "Contact upda1ted.";
public static final String TOPSECRET_DOC = "Contact book empty.";
public static final String CONFIDENTIAL_DOC = "Phone number does not exist.";
public static final String CONTACT_SHARE_PHONE = "There are contacts that share phone numbers.";
public static final String HELP_COMM = "register - registers a new user /n";
public static void main(String[] args) {
System.out.println("Welcome!");
//WeKeepSecrets app = new WeKeepSecretsClass();
Scanner in = new Scanner(System.in);
String comm = getCommand(in);
while (!comm.equals(EXIT)){
switch (comm) {
case HELP:
System.out.println(HELP);
default:
System.out.println("ERRO");
break;
}
comm = getCommand(in);
}
System.out.println(EXIT_COMM);
in.close();
}
private static String getCommand(Scanner in) {
String input;
input = in.nextLine().toUpperCase();
return input;
}
}
您的命令全部为小写,但是您正在将用户输入转换为大写。改为小写。
input = in.nextLine().toLowerCase();
您可能还想将break
添加到HELP命令:
case HELP:
System.out.println(HELP);
break;
break
中的case
中缺少[HELP
toUpperCase()
。do...while
避免两次使用comm = getCommand(in);
下面给出的是更正的代码:
import java.util.Scanner;
public class Main {
// Constantes que definem os comandos
public static final String REGISTER = "register";
public static final String LISTUSERS = "listusers";
public static final String UPLOAD = "upload";
public static final String READ = "read";
public static final String WRITE = "write";
public static final String GRANT = "grant";
public static final String REVOKE = "revoke";
public static final String USERDOCS = "userdocs";
public static final String TOPLEAKED = "topleaked";
public static final String TOPGRANTERS = "topgranters";
public static final String HELP = "help";
public static final String EXIT = "exit";
// Constantes que definem as mensagens para o utilizador
public static final String EXIT_COMM = "Bye!";
public static final String REGISTER_COMM = " was registered.";
public static final String ALREADY_REG_ERROR = " is already assigned to another user.";
public static final String NO_LIST_USERS = "There are no registered users.";
public static final String DOC_UPLOADED = " was uploaded.";
public static final String OFFICIAL_DOC = "Contact upda1ted.";
public static final String TOPSECRET_DOC = "Contact book empty.";
public static final String CONFIDENTIAL_DOC = "Phone number does not exist.";
public static final String CONTACT_SHARE_PHONE = "There are contacts that share phone numbers.";
public static final String HELP_COMM = "register - registers a new user /n";
public static void main(String[] args) {
System.out.println("Welcome!");
// WeKeepSecrets app = new WeKeepSecretsClass();
Scanner in = new Scanner(System.in);
String comm;
do {
System.out.print("Enter command: ");
comm = getCommand(in);
switch (comm) {
case HELP:
System.out.println(HELP);
break;
default:
if (!comm.equals(EXIT)) {
System.out.println("ERRO");
}
}
} while (!comm.equals(EXIT));
System.out.println(EXIT_COMM);
}
private static String getCommand(Scanner in) {
String input;
input = in.nextLine();
return input;
}
}
示例运行:
Welcome!
Enter command: help
help
Enter command: abc
ERRO
Enter command: exit
Bye!
如有任何疑问/问题,请随时发表评论。