2017-04-20 202 views
-3

無法弄清楚如何編寫我的方法,我嘗試的任何操作都會給我編譯錯誤。總之,我需要我的方法遍歷我傳遞下來的布爾數組。瞭解False是否連續出現,或者True是否連續出現。在我提供的False數組中出現了更多的連續性,因此它應該將false返回給main。我現在完全失去了任何提示?Boolean在方法中返回True或False

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




    } 
    public static boolean longerTF(boolean[] guess) 
    { 

    int variable = 0; 

    for(int x = 0; x < guess.length; x++) 
    { 
    if(guess[x] 




    } 
} 
+0

請參考[遊覽],學習http://stackoverflow.com/help/how-to-ask並製作[mcve]。 – Yunnosch

+2

可能[複製](http://stackoverflow.com/questions/43509871/boolean-array-passed-to-method-to-return-true-or-false) –

+0

所以你不會包括編譯錯誤? – John3136

回答

0

您可以使用標誌來檢查當前元素是true還是false,以及數組的前一個元素是什麼。 您可以嘗試以下方法。問我,如果您有任何疑問

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

    boolean result = longerTF(guess); 
    System.out.println(result); 
} 

public static boolean longerTF(boolean[] guess) { 

    int variable = 0; 
    boolean trueFlag = false; 
    boolean falseFlag = false; 
    int trueCount = 0, falseCount = 0; 
    for (int x = 0; x < guess.length; x++) { 
     if (guess[x] == true) { 
      if (falseFlag == true) { 
       trueCount = 0; 
      } 
      trueFlag = true; 
      falseFlag=false; 
      trueCount++; 
     } else { 
      if (trueFlag == true) { 
       falseCount = 0; 
      } 
      falseFlag = true; 
      trueFlag=false; 
      falseCount++; 
     } 
    } 
    if (trueCount > falseCount) { 
     return true; 
    } else { 
     return false; 
     } 
    } 
    } 
-1

公共靜態無效booleanTF(){

boolean[] arr = {true,true,false,false,false}; 
    int fIndex = 0; 
    int fMaxCount = 0; 
    int tIndex = 0; 
    int tMaxCount = 0; 
    for(boolean ar : arr){ 
     if(ar){ 
      tIndex++; 
      if(tIndex > tMaxCount){ 
       tMaxCount = tIndex; 
      } 
      fIndex= 0; 

     }else{ 
      fIndex++; 
      if(fIndex > fMaxCount){ 
       fMaxCount = fIndex; 
      } 
      tIndex=0; 
     } 
    } 
    if(fMaxCount > tMaxCount){ 
     System.out.println("False appers more " + fMaxCount); 
    }else if (tMaxCount > fMaxCount){ 
     System.out.println("True appers more " + tMaxCount); 
    }else{ 
     System.out.println("Same Count " + tMaxCount); 
    } 
} 
0

顯然沒有做到這一點的最有效的方法,但是:

public static boolean longerTF(boolean[] guess) { 
    return findMaxSeqLength(guess, true) > findMaxSeqLength(guess, false); 
} 

private static int findMaxSeqLength(boolean[] array, boolean value) { 
    int maxSeqLength = 0; 
    int counter = 0; 

    for (boolean b : array) { 
     counter = (b == value) ? ++counter : 0; 
     maxSeqLength = Math.max(maxSeqLength, counter); 
    } 

    return maxSeqLength; 
} 

查找最長true序列,找到最長的false序列並比較它們的長度。