0

在这里,我有一个简单的 try/catch 语句,用于输入客户名字和姓氏的字符串。但是,如果输入数字或用户输入任何其他非文本字符,我需要抛出异常(因为名称仅包含文本)。问题在于字符串确实接受任何字符而不仅仅是文本。如果用户输入除文本之外的任何内容,我如何才能执行捕获?

public void Customer ()
    {
        //Variables for Customer method
        String firstName;
        String lastName;
        int customerNumber;
        boolean end = false;

        /* Reads input from user
         * Stores customers first and last name into the variable name
        */
        while(end == false)
        {
        try
            {
                System.out.println("Enter customers full name" );
                firstName = input.nextLine();

                System.out.println("Enter customers last name");
                lastName = input.nextLine();
                end = true;
            }

        catch (InputMismatchException ime)
        {
            end = false;
            System.out.println("Invalid input. You must enter the customers name. Please try again: ");
            input.next();
        }
        }   
    }
4

3 回答 3

0

制作一个arrayList不在名称标准中的字符串,因此请执行以下操作:

ArrayList< String>arrayList=new ArrayList<String>();
    arrayList.add("?");
    //add other String
    String input ="some text";
    for(int i=0;i<arrayList.size();i++){
        if(input.contains(arrayList.get(i)))
    input=input.replace(arrayList.get(i), "");
    }

或者您可以摆脱更换部件,如果条件属实,请他或她再试一次

于 2013-10-10T04:57:38.677 回答
0

你可以做一个自定义例外

public boolean isAlpha(String name) {
char[] chars = name.toCharArray();

for (char c : chars) {
    if(!Character.isLetter(c)) {
        return false;
    }
}

return true;

}

class InvalidException extends Exception {

    InvalidException() {
    }

    InvalidException(String message) {

  super(message);
    }

    InvalidException(String message, Throwable cause) {

  super(message, cause);
    }
}

public void Customer () { //Customer 方法的变量 String firstName; 字符串姓氏;int 客户编号;布尔结束 = 假;

    while(end == false)
    {
    try
        {
            System.out.println("Enter customers full name" );
            firstName = input.nextLine();

            System.out.println("Enter customers last name");
            lastName = input.nextLine();
    if(isAplha(lastname)){

    }
    else
    {
    throw new InvalidException("Your message here");
    }
            end = true;
        }

    catch (InputMismatchException ime)
    {
        end = false;
        System.out.println("Invalid input. You must enter the customers name. Please try again: ");
        input.next();
    }
    }   
}
于 2013-10-10T05:20:38.770 回答
0

如果现在正则表达式对你来说太高调了,你可以使用一个字符数组来制定字符串......对于每个字符数组条目,你可以检查with isNumber() , isDigit and so on...但是当我之前推荐过这个答案时,一位高级成员说 - “如果他的右手写下这段代码,他会用左手殴打自己的右手”:P

于 2013-10-10T05:22:29.513 回答