【问题标题】:Bool vals won't print out in console布尔值不会在控制台中打印出来
【发布时间】:2013-01-02 16:20:17
【问题描述】:

我对一个非常简单的字符串验证问题感兴趣,看看字符串中的起始字符是否以大写字母开头,然后让控制台显示真假。据我了解,您不必调用 System.console().printf("true", s) 之类的东西来实现这一点。我可以发誓我已经看到使用以下示例代码实现了类似的基本实现:

public class Verify {
    public static boolean checkStartChar(String s) {
        if (s.startsWith("[A-Z]")) {
            return true;
        } else {
            return false;
        }
    }

    public static void main(String[] args) {
        String str = "abCD";
        checkStartChar(str);
    }
}

但是当我运行它时,什么都没有显示。如果我在返回 T/F 之前通过添加条件打印输出进行轻微修改,例如

public class Verify2 {
    public static boolean checkStartChar(String s) {
        if (s.startsWith("[A-Z]")) {
            System.out.println("yep");
            return true;
        }
        else {
            System.out.println("nope");
            return false;
        }
    }

    public static void main(String[] args) {
        String str = "abCD";
        checkStartChar(str);
    }
}

问题在某种程度上已解决,因为控制台显示“是”或“否”,但尚未解决,因为我只想让控制台显示真或假。而已。建议?

【问题讨论】:

  • 另见this问题。

标签: java string printing console boolean


【解决方案1】:

在您的代码中 checkStartChar(str);正在返回一个未在您的程序中使用的布尔值。然后,如果您想显示 true 或 false,那么您可以使用。 System.out.println(checkStartChar(str));

【讨论】:

    【解决方案2】:

    由于问题已经得到解答,我想指出 RegEx 没有必要解决这个问题(而且它们是昂贵的操作)。你可以这样做:

    static boolean startsWithUpperCase(String toCheck)
    {
        if(toCheck != null && !toCheck.isEmpty())
        {
            return Character.isUpperCase(toCheck.charAt(0));
        }
        return false;
    }
    

    【讨论】:

      【解决方案3】:

      尚未解决,因为我只想让控制台显示真假

      调用checkStartChar 方法将返回值,这并不意味着它将值打印到控制台。您需要编写您希望如何处理返回值的代码。如果你想打印返回值,那么你应该这样做:

      System.out.println(checkStartChar(str));
      

      将打印checkStartChar 方法的返回值

      【讨论】:

      • 好的,效果很好;刚刚将它添加到 main 中,我很高兴。谢谢
      • @madrush:不客气。祝你好运。如果有用,请考虑使用正则表达式和其他建议的解决方案(我不是正则表达式专家)。
      【解决方案4】:
      if(s.startsWith("[A-Z]")){
      

      String.startsWith(prefix) 不使用正则表达式作为参数,您应该使用正则表达式 APi。

      Pattern p = Pattern.compile("[A-Z]");
      Matcher m = p.matcher(new Character(s.charAt(0)).toString());
      if(m.find()){
                  return true;
      }else{
          return false;
      }
      String str = "AbCD";
      System.out.println(checkStartChar(str));
      

      输出:

        true
      

      【讨论】:

      • 您也可以在您尝试匹配的字符串上使用更简单的String.matches(String regex) 方法。请注意,要返回 true 的匹配项,它必须匹配完整的字符串,因此在这种情况下,正则表达式将是 ^[A-Z].*
      • @PeterElliott 绝对是,但是我不太擅长正则表达式,正如你所看到的,我使用了一个非常基本的正则表达式。但感谢您的建议... :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多