2017-04-21 7 views
-5

Voici un petit code que j'ai écrit; en bref, je suis simplement coincé et ne peux pas comprendre ce que je fais mal. Fondamentalement, mon intention pour le code est de vérifier mon tableau booléen; savoir si true est listé plus consécutif ou si false est. Faux est bien sûr listé plus donc il devrait alors retourner faux à ma méthode principale.Java: Boolean ne retourne pas false à la méthode principale

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; 
     } 
    } 
} 
+0

Vous n'utilisez jamais la valeur de 'result' dans main. Comment savez-vous que ce code ne fonctionne pas? –

+3

Ce code est-il supposé compiler? [Comment créer un exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) –

+1

Qu'est-ce que vous voulez réaliser? faux nombre? – Abhishek

Répondre

1

Try This (Fait un changement de logique)

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; 
} 
} 
+0

Comment ce code fait * savoir si true est listé plus consécutif * Tout ce que vous faites c'est compter les occurrences –

+0

Ohhhh ... Je n'ai pas lu ça ... Je vais mettre à jour ... – Abhishek

+1

La déclaration if autour du déclaration de retour est inutile. Il suffit de renvoyer la comparaison –

0

Vous essayez de retourner une variable int lorsque vous avez évidemment votre méthode déclarée comme un type boolean. Pour ce faire, à la place:

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

En outre, dans ce cas précis (parce que vous traitez un tableau), ne comprennent pas l'instruction de retour dans la boucle for.

j'expliquer cela mieux si je n'utilisais pas mobile: P

1

Le problème immédiat devrait être de retour un booléen, pas un entier. Vous pouvez le faire en vérifiant simplement quel compte est le plus grand.

Votre deuxième problème est de revenir après avoir regardé la totalité du tableau, pas seulement le premier élément.

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; 
} 

Note: vous avez seulement besoin d'un compteur pour un tableau de deux valeurs possibles ... Par exemple,

int variableFalse = guess.length - variableTrue; 

Votre question a demandé des éléments consécutifs, mais ce code seulement des rendements qui se produit le plus dans le tableau entier, continuez donc à travailler sur la logique