File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
Win a copy of Clojure in Action this week in the Clojure forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Array and While Loop Question

 
Brian Kenney
Greenhorn
Posts: 6
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Pie
Posts: 6529
21
Java Linux Mac Scala Spring
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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?
 
Brian Kenney
Greenhorn
Posts: 6
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Pie
Posts: 12017
24
Chrome Java Linux
  • 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Brian Kenney
Greenhorn
Posts: 6
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ahh!! Thank you. I now understand.
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic