java中的输入检查方法
我有一个输入检查功能,从用户那里获取输入。(应该是小写字母和数字,用于战舰游戏。)该函数需要从输入中删除空格,将其小写,并检查以确保第一个字符是字母,第二个字符是数字。字母必须从a到g,数字必须从1到7。我写了一些代码,但由于某种原因,在任何错误之后,程序都会结束。它应该显示一条错误消息并等待新的输入。我做错了什么?这是我的密码java中的输入检查方法,java,methods,input,Java,Methods,Input,我有一个输入检查功能,从用户那里获取输入。(应该是小写字母和数字,用于战舰游戏。)该函数需要从输入中删除空格,将其小写,并检查以确保第一个字符是字母,第二个字符是数字。字母必须从a到g,数字必须从1到7。我写了一些代码,但由于某种原因,在任何错误之后,程序都会结束。它应该显示一条错误消息并等待新的输入。我做错了什么?这是我的密码 inputLine = is.readLine(); inputLine = inputLine.replaceAll("\\s", "
inputLine = is.readLine();
inputLine = inputLine.replaceAll("\\s", "");
inputLine = inputLine.toLowerCase();
if (inputLine.length() == 0)
inputLine = null;
else if (inputLine.length() > 2) {
System.out.println("Invalid input, please enter column (a-g) and row (1-7)");
inputLine = null;
} else {
if (Character.isLetter(inputLine.charAt(0))) {
char i = inputLine.charAt(0);
if (i < 'a' || i > 'g') {
System.out.println("Invalid input, please enter a letter a to g");
inputLine = null;
}
int row = i - 'a';
if (Character.isDigit(inputLine.charAt(1))) {
int k = (inputLine.charAt(1) - '0');
if (k < 1 || k > 7) {
System.out.println("Invalid input, please enter a digit 1 to 7");
inputLine = null;
}
}
}
}
} catch (IOException e) {
System.out.println("IOException: " + e);
}
return inputLine;
}
inputLine=is.readLine();
inputLine=inputLine.replaceAll(“\\s”和“);
inputLine=inputLine.toLowerCase();
如果(inputLine.length()==0)
inputLine=null;
else if(inputLine.length()>2){
System.out.println(“输入无效,请输入列(a-g)和行(1-7)”;
inputLine=null;
}否则{
if(Character.islet(inputLine.charAt(0))){
字符i=输入行.charAt(0);
如果(i<'a'| i>'g'){
System.out.println(“输入无效,请输入字母a到g”);
inputLine=null;
}
int row=i-‘a’;
if(Character.isDigit(inputLine.charAt(1))){
int k=(inputLine.charAt(1)-“0”);
如果(k<1 | | k>7){
System.out.println(“无效输入,请输入数字1到7”);
inputLine=null;
}
}
}
}
}捕获(IOE异常){
System.out.println(“IOException:+e”);
}
返回输入线;
}
下面的代码块将抛出空指针异常。如果第一个字符无效,并且执行了第一个If
,则inputline设置为null
。然后在下一个中,如果
正在调用inputline
上的一个方法(现在为空),则会引发异常。而不是执行inputline=null
,改为返回空
并立即返回null
if (i<'a' || i>'g')
{
System.out.println("Invalid input, please enter a letter a to g");
inputLine = null;
}
int row = i -'a';
if (Character.isDigit(inputLine.charAt(1)))
if(i'g')
{
System.out.println(“输入无效,请输入字母a到g”);
inputLine=null;
}
int row=i-'a';
if(Character.isDigit(inputLine.charAt(1)))
请正确缩进此代码。您说希望在出现错误后等待新的输入,程序中指向该要求的代码在哪里?可能是一个循环,返回到请求新输入的起始点。我该怎么做?有什么建议吗?谢谢。我尝试将“inputLine=null”更改为“returnnull;”,但仍然不起作用。。当我输入错误时,程序就退出了。。例如d23。。或者f5..它会引发什么异常?