我有一个从控制台获取输入的程序。它检查输入然后使用'如果它决定做什么。一节测试,看看字符串的前四个字母是什么,看它是否需要处理它,但不是所有的字符串总是4个或更多字母长。这意味着如果您键入的内容长度少于4个字母,则会遇到错误,然后退出。我不能把那个部分放在最后,因为最后有一个else,如果命令未知,则调用并发生一些事情。有没有办法可以阻止错误发生?
我的代码是:
if(input.equals("help")){
int commandsSize = commands.size();
for(int i = 0; i < commandsSize; i++) {
String value = commands.get(i);
System.out.println(value);
} else if((input.substring(0, 4)).equals("open")) {
...
}
答案 0 :(得分:0)
您可以检查用户输入的字符串的大小,
if (input.length() != 4) {
System.out.println("You must enter valid input");
// Probably do something here.
}
if(input.equals("help")){
int commandsSize = commands.size();
for(int i = 0; i < commandsSize; i++) {
String value = commands.get(i);
System.out.println(value);
}
} else if((input.substring(0, 3)).equals("open")) {
...
}
答案 1 :(得分:0)
您的代码在substring方法中出错,因为如果字符串少于4个字符,则该方法超出字符串的边界(或构成字符串的char数组)。在调用字符串对象上的方法之前,您还需要检查字符串是否为空。
要拥有与当前相同的流,但为了保护代码免受子字符串错误而不是null,您可以这样做:
if(input != null && input.equals("help")){
//some code
} else if((input != null && input.length() >= 4) && (input.substring(0, 4)).equals("open")) {
//some code
}