Как использовать логические значения, возвращаемые методом Java? - PullRequest
0 голосов
/ 01 октября 2011

У меня есть метод, который отправляет набор символов в другой метод, который возвращает true или false, если присутствует определенный символ.Как только этот метод оценивает все символы и возвращает true или false для каждого из них, как я могу использовать эти true или false vales в другом методе?Я думаю, у меня есть метод отправки одного символа за раз.Логический метод не является логическим массивом.

    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

}

Ответы [ 2 ]

2 голосов
/ 01 октября 2011

так что ваш метод такой

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;
}
1 голос
/ 01 октября 2011

Из того, что я вижу, вы могли бы вместо этого использовать 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);
...