Am writting a Linear Search implementation. I have written the code by using Java 7 and 8 as well.
Below is my code:
int[] arr = new int[] { 12, 34, 94, 8, 37, 10 };
System.out.println("Enter the element to search: ");
Scanner scan = new Scanner(System.in);
int element = scan.nextInt();
boolean found = false;
// Linear search implementation using Java 7 features
for (int i = 0; i < arr.length; i++) {
if (element == arr[i]) {
int n = element;
System.out.println("Element : "+n+" has been found at the index : "+i);
found = true;
break;
}
}
// Linear search implementation using Java 8 features
IntStream.range(0, arr.length)
.forEach(i -> {
if (element == arr[i]) {
int n = element;
System.out.println("Element : " + n + " has been found at the index : " + i);
found = true;
break;
}
});
if (!found) {
System.out.println("Element : "+ element + " not found.");
}
Following piece of code is working properly:
for (int i = 0; i < arr.length; i++) {
if (element == arr[i]) {
int n = element;
System.out.println("Element : " + n + " has been found at the index : " + i);
found = true;
break;
}
}
But, below code with Java 8 features throwing error for the fields inside forEach loop
IntStream.range(0, arr.length)
.forEach(i -> {
if (element == arr[i]) {
int n = element;
System.out.println("Element : " + n + " has been found at the index : " + i);
found = true;
break;
}
});
An error occurs:
Local variable found defined in an enclosing scope must be final or effectively final
break cannot be used outside of a loop or a switch
How can I access boolean found
inside forEach block in Java 8 features?