我只输入字母而不是数字

时间:2012-11-04 18:52:06

标签: java regex

对于我的项目,我需要输入一个没有数字的名字和姓,但我在网上找不到任何东西。如果你能提供帮助,那就太棒了。

如果你有时间,我需要在用户输入时用逗号翻转名字和姓氏。

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;

    public class PhoneListr {

public static void main (String[] args) throws IOException {
    String firstName;
    String lastName;
    System.out.println ("Please enter your first name:");
    firstName = PhoneList ("");
    System.out.println ("Please enter your last name:");
    lastName = PhoneList ("");
    System.out.println ("Your full name is: " + lastName + "," + firstName);
}

public static String PhoneList (String input) throws IOException {
    boolean continueInput = false;

    while (continueInput == false) {

            BufferedReader bufferedReader = new BufferedReader (new InputStreamReader (System.in));
            input = bufferedReader.readLine();
            continueInput = true;

            if(input.matches("[a-zA-Z]+")) {
                continueInput = true;
                    }
                  else {
                 System.out.println ("Error, you may only use the alphabet");
                 continueInput = false;
        }
    }
    return input;
}

}

5 个答案:

答案 0 :(得分:4)

使用String.matches(regex)

    if(input.matches("[a-zA-Z]+")) {
     System.out.println("your input contains no numerics");
        }
      else {
     System.out.println("only alphabets allowed");
}

上述正则表达式检查a到z,或A到Z,包括(范围)。

答案 1 :(得分:1)

对于这种类型的字符串匹配,您需要使用正则表达式或“RegEx”es。这是一个非常重要的主题,但here's an introduction。 RegExes是用于测试字符串是否符合某些条件,和/或从该字符串中提取某些模式或将与这些模式匹配的某些部分替换为其他模式的工具。

以下是使用RegEx测试您的输入是否包含数字的示例:

if(input.matches("\\d")) {
 // matched a digit, do something
}

答案 2 :(得分:1)

根据OP问题和澄清,这里提出的建议很少。

Chaitanya解决方案完美地处理仅检查字母

关于被忽视的问题领域:

我建议你在firstName

中制作两个变量lastNamemain()
String firstName;
String lastName;

将方法phoneList()的重新调整类型更改为String

在方法input中返回number的{​​{1}}内容{实际上不知道您为什么要返回号码)并将其存储在phoneList和{{ 1}}

firstName

现在以“逗号格式”使用

打印
lastName

当我再次阅读你的节目时,它一团糟!!

关于方法System.out.println ("Please enter your first name:"); firstName = PhoneList (0); System.out.println ("Please input your last name:"); lastNamr =PhoneList (0);

  
      
  1. 使用正则表达式条件将continueInput设置为true / flase而不利用execptions。
  2.   

P.S。我希望“编辑”发布,如果任何其他成员发现上述任何错误,使用手机,不确定格式等等谢谢。 :-)(y)

答案 3 :(得分:0)

您也可以使用

if(input.matches("[^0-9]"))
{
System.out.println("Don't input numbers!");
continueInput = false;}

无法理解第二个问题的要求。为了回答我从你的第二个问题得到的是这样的。 在main函数中更改代码,如

String first_name = null;
String last_name = null;
System.out.println ("Please enter your first name:");
first_name = PhoneList();
System.out.println ("Please input your last name:");
second_name = PhoneList();
System.out.println (second_name+","+first_name);

然后在PhoneList函数中最后一行应改为

return input;

请检查a link!了解更多信息

答案 4 :(得分:-1)

您可以通过将参数传递给方法StringUtils.isNumeric

来添加检查

如果输入的字符串是数字

,则返回true