在做一个学校项目的时候,我遇到了以下问题:从processCommand()
方法(使用控制台作为一种文本编辑器)向run()
方法输入一行后,我发现无论出于什么原因,令牌都没有正确读取,所以即使命令应该简单准确(即在控制台中键入h),我仍然会运行processCommand()
方法的'else'子句。请输入有效的命令。“)。我确定我如何分裂线路有什么问题,但对于我的生活我无法理解。任何人都可以帮助我吗?
@Override
public void run() {
Scanner scanner = new Scanner(System.in);
String line;
try {
do {
System.out.print("vi: ");
line = scanner.nextLine();
if(line.length() > 0){
processCommand(line);
}
} while (!quit);
} catch (Exception ex) {
System.out.println("An error occurred.");
}
scanner.close();
System.out.println("Goodbye!");
}
@Override
public void processCommand(String line) {
String[] tokens = line.split(" ");
if(tokens[0] == "b") {
insertBefore(line.substring(3));
}
if(tokens[0] == "i") {
insertAfter(line.substring(3));
}
if(tokens[0] == "m") {
moveUp(Integer.parseInt(line.substring(3)));
}
if(tokens[0] == "u") {
moveDown(Integer.parseInt(line.substring(3)));
}
if(tokens[0] == "r") {
remove(Integer.parseInt(line.substring(3)));
}
if(tokens[0] == "d") {
remove(Integer.parseInt(line.substring(3)));
}
if(tokens[0] == "c") {
clear();
}
if(tokens[0] == "s") {
try {
save(line.substring(3));
} catch (IOException e) {
}
}
if(tokens[0] == "l") {
try{
load(line.substring(3));
} catch (IOException e) {
}
}
if(tokens[0] == "h") {
displayHelp();
}
if(tokens[0] == "x") {
exit();
}
else {
System.out.println("Please enter a valid command.");
return;
}
}
答案 0 :(得分:3)
您不应该使用“==”进行字符串比较。使用以下内容:
if(tokens[0].equals("h"))...
希望有所帮助!
答案 1 :(得分:0)
仅供参考,这是使用switch语句的替代版本(可能更容易阅读或更少字符输入):
public void processCommand(String line) {
String[] tokens = line.split(" ");
if(tokens[0].length() == 0) {
System.out.println("Please enter a valid command.");
return;
}
switch(tokens[0].charAt(0)) {
case 'b': insertBefore(line.substring(3));
break;
case 'i': insertAfter(line.substring(3));
break;
case 'm': moveUp(Integer.parseInt(line.substring(3)));
break;
case 'u': moveDown(Integer.parseInt(line.substring(3)));
break;
case 'r':
case 'd': remove(Integer.parseInt(line.substring(3)));
break;
case 'c': clear();
break;
case 's': try {
save(line.substring(3));
} catch (IOException e) { }
break;
case 'l': try {
load(line.substring(3));
} catch (IOException e) { }
break;
case 'h': displayHelp();
break;
case 'x': exit();
break;
default: System.out.println("Please enter a valid command.");
}
}