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: 5288
    
  10

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: 11499
    
  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