Reputation: 167
I am very new to Java, sorry if the question is too simple. I am trying to evaluate whether an array is part of the fibonacci sequence. I do not know how to return "true" value when the whole "for" loop does not break. Any ideas? Thank you in advance! This is what I have for now:
public boolean checkFibb(ArrayList<Integer> array1) {
int i;
int fibb;
if (array1.size() < 3) {
System.out.println("Your array is too short!");
} else {
for (i = 0; i <= array1.size() - 2; i++) {
fibb = array1.get(i + 2) - (array1.get(i + 1) + array1.get(i));
if (fibb != 0) {
System.out.println("Elements are not part of the Fibonacci sequence.");
break;
} else {
System.out.println("Elements are part of the Fibonacci sequence.");
}
}
}
return true;
}
Upvotes: 2
Views: 1435
Reputation: 71
You always return true
from the method. You should do something as follows:
public boolean checkFibb(ArrayList<Integer> array1) {
int i;
int fibb;
boolean isFibb = true;
if (array1.size() < 3) {
System.out.println("Your array is too short!");
isFibb = false;
} else {
for (i = 0; i <= array1.size() - 2; i++) {
fibb = array1.get(i + 2) - (array1.get(i + 1) + array1.get(i));
if (fibb != 0) {
System.out.println("Elements are not part of the Fibonacci sequence.");
isFibb = false;
break;
} else {
System.out.println("Elements are part of the Fibonacci sequence.");
}
}
}
return isFibb;
}
Upvotes: 3
Reputation: 2489
What you're doing in your code is you're breaking the current iteration of the loop when you detect that the elements aren't part of a fibonacci sequence. break
only stops the current iteration of the loop that you are in. What you want to do is return false
from the function at this point. When you detect that the array is indeed a fibonacci sequence you would want to return true
at this point.
If you array is too short, it cannot be a fibonacci sequence thus you would return false
at this point.
public boolean checkFibb(ArrayList<Integer> array1) {
int i;
int fibb;
if (array1.size() < 3) {
System.out.println("Your array is too short!");
return false;
} else {
for (i = 0; i <= array1.size() - 2; i++) {
fibb = array1.get(i + 2) - (array1.get(i + 1) + array1.get(i));
if (fibb != 0) {
System.out.println("Elements are not part of the Fibonacci sequence.");
return false;
} else {
System.out.println("Elements are part of the Fibonacci sequence.");
return true;
}
}
}
}
Upvotes: 2