File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Beginning Java and the fly likes Array and While Loop Question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Array and While Loop Question" Watch "Array and While Loop Question" New topic
Author

Array and While Loop Question

Brian Kenney
Greenhorn

Joined: Mar 22, 2012
Posts: 6
Ok...I am having some trouble wrapping my head around the answer to a problem. Here it is:

// returns index of first occurrence of valid arr
// after position start;
// returns arr.length if val is not found
public int findNext(int[] arr, int val, int start)
{
int pos = start + 1;

while ((pos < arr.length) && (arr[pos] != val))
pos++;

return pos;
}

int[] arr = {11, 22, 100, 33, 100, 11, 44, 100};

System.out.println(findNext(arr, 100, 2));

The execution of the code results in the value 4 being printed. The way I see it, the result should be 3 right?

Also, why does the code not work if I change the condition to (arr[pos] != val) && (pos < arr.length)

Thanks for the help!!
Junilu Lacar
Bartender

Joined: Feb 26, 2001
Posts: 4462
    
    6

1. Why do you think it should be 3?
2. You get an IndexOutOfBoundsException, right? What's the index and why is it out of bounds? Do you understand how the && operator works?


Junilu - [How to Ask Questions] [How to Answer Questions]
Brian Kenney
Greenhorn

Joined: Mar 22, 2012
Posts: 6
I think its 3 because of the 3 occurrences of the 100...but I am thinking the code is just counting the index locations to get 4? Based on the conditional?
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11325
    
  16

Assuming the comments are right (and that is often a dicey assumption)

// returns index of first occurrence of valid arr
// after position start;

So you are looking for the index of the first occurrence of 100 AFTER array index 2. Here is your array:


So, what is the index for the first occurrence of 100 after position 2? It looks like 4 to me.


There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
Brian Kenney
Greenhorn

Joined: Mar 22, 2012
Posts: 6
Ahh!! Thank you. I now understand.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Array and While Loop Question