java中的输入检查方法

java中的输入检查方法,java,methods,input,Java,Methods,Input,我有一个输入检查功能,从用户那里获取输入。(应该是小写字母和数字,用于战舰游戏。)该函数需要从输入中删除空格,将其小写,并检查以确保第一个字符是字母,第二个字符是数字。字母必须从a到g,数字必须从1到7。我写了一些代码,但由于某种原因,在任何错误之后,程序都会结束。它应该显示一条错误消息并等待新的输入。我做错了什么?这是我的密码 inputLine = is.readLine(); inputLine = inputLine.replaceAll("\\s", "

我有一个输入检查功能,从用户那里获取输入。(应该是小写字母和数字,用于战舰游戏。)该函数需要从输入中删除空格,将其小写,并检查以确保第一个字符是字母,第二个字符是数字。字母必须从a到g,数字必须从1到7。我写了一些代码,但由于某种原因,在任何错误之后,程序都会结束。它应该显示一条错误消息并等待新的输入。我做错了什么?这是我的密码

        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..它会引发什么异常?