0

对于我的项目,我需要输入没有数字的名字和姓氏,但我根本无法在网上找到任何东西。如果你能帮忙,那就太好了。

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

    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;
}

}

4

5 回答 5

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,包括(范围)。

于 2012-11-04T18:55:36.547 回答
1

对于这种类型的字符串匹配,您需要使用正则表达式或“RegEx”es。这是一个非常大的话题,但这里有一个介绍。正则表达式是用于测试字符串是否符合某些标准的工具,和/或从该字符串中提取某些模式或用其他东西替换与这些模式匹配的某些部分。

这是一个使用 RegEx 测试您的输入是否包含数字的示例:

if(input.matches("\\d")) {
 // matched a digit, do something
}
于 2012-11-04T19:03:01.190 回答
1

基于 OP 问题和澄清,这里有一些建议。

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

关于被忽视的问题领域:

我建议你在里面firstName做两个变量lastNamemain()

String firstName;
String lastName;

将方法的返回类型更改phoneList()String

返回方法中输入的名称(input实际上看不到您返回数字的原因)并将其存储在andnumberphoneListfirstNamelastName

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

现在以“逗号格式”使用

  System.out.println("full name is: " +lastName+ "," +firstName);

当我再次阅读您的程序时,它一团糟!

关于方法phoneList()

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

Ps 如果任何其他成员发现上述任何错误,使用手机,不确定格式等,我将不胜感激“编辑”。谢谢。:-) (y)

于 2012-11-04T19:18:59.107 回答
0

你也可以使用

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

不明白第二个问题问什么。为了回答我从你的第二个问题得到的答案是这样的。在主函数中更改这样的代码

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;

请检查链接!了解更多信息

于 2012-11-04T19:20:52.947 回答
-1

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

如果输入的字符串是数字,则返回 true

于 2012-11-04T19:02:04.017 回答