【问题标题】:How do I use the Boolean values returned by a Java method?如何使用 Java 方法返回的布尔值?
【发布时间】:2011-11-28 18:59:58
【问题描述】:

我有一个方法可以将一堆字符发送到另一个方法,如果存在某个字符,该方法将返回 true 或 false。一旦此方法评估所有字符并为每个字符返回 true 或 false,我如何在另一个方法中使用这些 true 或 false 值? 我想我有一次发送一个字符的方法。布尔方法不是布尔数组。

    public void Parse(String phrase)
{
    // First find out how many words and store in numWords
    // Use "isDelim()" to determine delimiters versus words
    //
    // Create wordArr big enough to hold numWords Strings
    // Fill up wordArr with words found in "phrase" parameter


    int len = phrase.length();
    char[] SeperateString = new char[len];
    for (int i = 0; i < len; i++) {
        SeperateString[i] = phrase.charAt(i);
        isDelim(SeperateString[i]);
        System.out.println(SeperateString[i]);

  boolean isDelim(char c)
{


    {
        if (c == delims[0])
            return true;
        else if (c == delims[1])
            return true;

        else if (c == delims[2])
            return true;
        else
            return false;

    }

    //Return true if c is one of the characters in the delims array, otherwise return false

}

【问题讨论】:

  • 发布您的代码。你的问题不清楚。
  • 您是一次发送collection 个字符,还是逐个发送字符?该方法是返回一个collection 的布尔值还是一个一个地返回布尔值?
  • 该方法返回的是布尔数组还是单个布尔值?
  • 你不能在另一个方法 (Parse) 中定义一个方法 (isDelim)。

标签: java boolean return


【解决方案1】:

所以你的方法是这样的

boolean myMethod(String s) {
    // returns true or false somehow... doesn't matter how
}

你可以稍后再做

boolean b = myMethod("some string");

someOtherMethod(b);

甚至

someOtherMethod(myMethod("some string"));

现在,如果您的方法返回大量布尔值,例如每个字符一个,它看起来更像这样

boolean[] myMethod(String s) {
    // generates the booleans
}

您必须以其他方式访问它们,也许像这样:

String str = "some string";
boolean[] bools = myMethod(str);
for(int i = 0; i < str.length(); i++) {
    someOtherMethod(bools[i]);
}

有关这方面的更多信息,您必须发布您的代码。

响应发布的代码,这就是我要做的

/**
 * Parse a string to get how many words it has
 * @param s the string to parse
 * @return the number of words in the string
 */
public int parse(String s) {
    int numWords = 1; // always at least one word, right?
    for(int i = 0; i < s.length(); i++) {
        if(isDelim(s.charAt(i)) numWords++;
    }
    return numWords;
}

private boolean isDelim(char c) {
    for(char d : delims) if(c == d) return true;
    return false;
}

【讨论】:

  • 那是作弊..你在我的评论问题之后编辑了它:)
  • @tolitius 我不会称之为作弊。我们第一次对这个问题的解释不同。就这样。我仍然很好奇它如何值得反对。
  • 放松,我在开玩笑。我们都在这里帮助/学习。如果需求得到满足,那才是最重要的。 [顺便说一句,我不是对你的答案投反对票的人]
  • 我投票是为了平衡,尽管您提出的问题含糊不清(或更糟),但您仍努力回答
  • @Guillaume 如果 OP 决定更新他的问题,我很乐意详细说明! :-)
【解决方案2】:

据我所知,您可以改用 String.split()。 您也可以使用正则表达式,因此您可以包含 3 个不同的分隔符。 如果你还需要作品的数量,你可以得到结果的长度。

http://download.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29

假设 delims 是一个字符数组,使用它来生成正则表达式是安全的:

String regex = "[" + new String(delims) + "]";
String result = params.split(regex);

【讨论】:

  • 这将编译一个正则表达式模式,这比他想要做的要昂贵得多。
  • 如果效率是个问题,那么是的,每个字符的方法会更快,但在大多数情况下,正则表达式增加的开销不会对运行时产生明显影响。最重要的是它减少了大量的代码。
猜你喜欢
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 2012-11-03
  • 1970-01-01
  • 2015-09-10
相关资源
最近更新 更多