Java:Boolean不向Main方法返回false

时间:2017-04-21 05:15:25

标签: java arrays methods

这是我编写的一些代码;简而言之,我很容易陷入困境,无法弄清楚我做错了什么。基本上我对代码的意图是检查我的布尔数组;找出是否真的列出更连续或如果是假的。当然,False列出的更多,所以它应该返回false给我的main方法。

public class FalseBoolean
{
   public static void main(String [] args) {
      boolean[] guess = {false,true,false,false,false,true,true};
      boolean result = longerTF(guess);
   }

   public static boolean longerTF(boolean[] guess) {

       int variableTrue = 0;
       int variableFalse = 0;

       for(int x = 0; x < guess.length; x++) {
           if(guess[x] == true) {
               variableTrue++;
           } else {
               variableFalse++;
           }
           return variableFalse;
       }
    }
}

3 个答案:

答案 0 :(得分:1)

试试这个(做出一些逻辑改变)

public class FalseBoolean
{
public static void main(String [] args)
{
    boolean[] guess = 
{false,true,true,true,true,false,false,false,true,true};

    boolean result = longerTF(guess);

    System.out.println(result);

}

public static boolean longerTF(boolean[] guess)
{

    int consecutiveVariableTrue = 0, maxConsecutiveVariableTrue = 0;
    int consecutiveVariableFalse = 0, maxConsecutiveVariableFalse = 0;

    for(int x = 0; x < guess.length; x++)
    {
        if(guess[x] == true) {
            consecutiveVariableTrue++;
            if (maxConsecutiveVariableTrue < consecutiveVariableTrue)
                 maxConsecutiveVariableTrue = consecutiveVariableTrue;
        } else {
            consecutiveVariableTrue = 0;
        }

    }

    for(int x = 0; x < guess.length; x++)
    {
        if(guess[x] == false) {
            consecutiveVariableFalse++;
            if (maxConsecutiveVariableFalse < consecutiveVariableFalse)
                  maxConsecutiveVariableFalse = consecutiveVariableFalse;
        } else {
            consecutiveVariableFalse = 0;
        }

    }

    if (maxConsecutiveVariableTrue >= maxConsecutiveVariableFalse) {

        return true;

    }

    return false;
}
}

答案 1 :(得分:1)

直接问题应该是返回一个布尔值,而不是一个整数。您可以通过简单地检查哪个计数最大来完成此操作。

您的第二个问题是在查看整个数组后返回,而不仅仅是第一个元素。

public static boolean longerTF(boolean[] guess) {

   int variableTrue = 0;
   int variableFalse = 0;

   for(int x = 0; x < guess.length; x++) {
       if(guess[x]) {
           variableTrue++;
       } else {
           variableFalse++;
       }
   }
   return variableTrue >= variableFalse;
}

注意:对于两个可能值的数组,您只需要一个计数器...例如,

int variableFalse = guess.length - variableTrue;

你的问题要求连续的元素,但是这个代码只返回整个数组中出现最多的元素,所以继续处理逻辑

答案 2 :(得分:0)

当您明确将方法声明为int类型时,您正尝试返回boolean变量。这样做:

if(variableFalse > variableTrue){
   return false;
}else if(variableTrue > variableFalse){
   return true;
}else{
   //Default return statement
}

此外,在这种特定情况下(因为您正在处理数组),请不要在for循环中包含return语句。

如果我不使用手机,我会更好地解释这个:P