【问题标题】:How to make program display an error message if the input doesn't start with a letter如果输入不是以字母开头,如何使程序显示错误消息
【发布时间】:2015-04-14 02:00:41
【问题描述】:

就像标题所说的那样,我已经尝试了几个小时。

System.out.print ("Please input the first name: ");
name1 = in.next();

if (name1.substring(0,1).equals("[a-zA-Z]"))
System.out.println("\t" + name1.substring(0,1).toUpperCase()+name1.substring(1).toLowerCase() + "  is in the name list");

else if (name1.substring(0,1).equals("[0-9]"));
System.out.println("error");

这是不适合我的部分代码。 我真的不知道我哪里错了,我是这个初学者。 使用这段代码,无论我写什么,我都会返回第二个 System.out.println,这是错误的。如果字符串不以数字开头,我希望程序显示错误消息。另外,请使用 if 语句来执行此操作,因为我无法使用我未涵盖的内容,否则我会搜索它。

【问题讨论】:

  • 你认为equals("a-zA-Z") 做了什么,你为什么这么认为?
  • 确实如此。 equals 不是正则表达式匹配。
  • @SotiriosDelimanolis 这是我在使用“包含”后使用的最后一件事,认为它与包含相同。
  • 如果要在 Character.isAlphabeticCharacter.isLetter 之间做出选择,请查看有关 the difference between them 的帖子以获取 TL;DR,如果它总是英文,没关系 :-)
  • @Tarik:它稍微更强,但我根本不认为它是一个骗子,因为 Ascalonian 已经详细说明了原因。

标签: java


【解决方案1】:

应该这样做:

if(!Character.isAlphabetic(name1.charAt(0)) {
    //it's not a letter
}

【讨论】:

    【解决方案2】:

    我建议你使用Character.isLetter(char),命名你的变量并在初始化时定义它们。类似的东西

    Scanner in = new Scanner(System.in);
    System.out.print ("Please input the first name: ");
    String firstName = in.next();
    if (Character.isLetter(firstName.charAt(0))) {
        // It is a letter.
    } else {
        // It is not a letter.
    }
    

    【讨论】:

      【解决方案3】:

      如果您想使用正则表达式,请使用matches

      if (name1.substring(0,1).matches("[a-zA-Z]"))
      

      equals 检查是否完全匹配。只有当你的第一个字母是“[a-zA-Z]”时它才会是真的,这永远不会发生。

      【讨论】:

      • 谢谢你的回复我也忘了问如果不是以字母开头的输入是否可以忽略。如果您能帮助我,我将不胜感激。
      • @Abz 刚刚看到你的消息。你可以对输入做任何你想做的事情,包括“忽略”它。但是还是需要先接收带变量的输入,否则没办法判断第一个字母是不是字母。
      【解决方案4】:

      你总是得到第二个打印语句的原因是你添加了一个';'在 else if 之后:

      改变

      else if (name1.substring(0,1).equals("[0-9]"));
      

      else if (name1.substring(0,1).equals("[0-9]"))
      

      先去掉那个分号!

      【讨论】:

      • 这是语法建议,您可以将其添加到 cmets 而不是答案中。即使这样也不能解决问题。
      • 是的。但我认为我的回答确实解释了为什么无论他提供什么作为输入,他都会打印出“错误”,这是问题的一部分。
      猜你喜欢
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多