这是我编写的一些代码;简而言之,我很容易陷入困境,无法弄清楚我做错了什么。基本上我对代码的意图是检查我的布尔数组;找出是否真的列出更连续或如果是假的。当然,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;
}
}
}
答案 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