You have a couple of problems with your code. First, you should stop the loop before i
has the value list.size()
. (Actually, since the index of the element is not used, you can use an enhanced for
loop, which is what I show below.) Second, you need to test for the condition you want, not that each element is <= 0
.
You don’t say what kind of values are in the list. If they are integer types (say, Integer
), then this should do it:
for (Integer val : list) {
if (val < -1) {
throw new IllegalArgumentException();
}
}
If they are floating point types (say, Float
), you need a slightly more complicated test to screen for values like -0.5:
for (Float val : list) {
if (val < 0 && val != -1) {
throw new IllegalArgumentException();
}
}
Also note that if the list can have null
entries, you’d need to test for that as well (or document that the method will throw a NullPointerException
for such a list).
solved Allowing only one negative in arrayList