Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Question with CodingBat exercise: Array-2: has22

 
Elvin Blen
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Good afternoon fellow greenhorns,

I'd like to take a second to introduce myself (on top of the question of course); my name's Elvin and I'm an I.T. student at Florida International University. At the moment I am going through some issues learning java and would like someone's assistance in completing the problem. I already know the answer to the problem but that's not what I'm looking for, I want to understand why my code doesn't work as opposed to the code that I found online. Provided is a link to the problem so that you may all see it (basically, in an array, if there is a 2, directly next to another 2 [in the elements of the array] return true, else return false. Seems simple enough right? WRONG! Below is my code and below that is the code that works.

My code:


---------------------------

working code:


----------------
Someone please cure this ache of mine.... thanks in advance for all replies!
 
Elvin Blen
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I seem to have forgotten to provide the link, here it is.

http://codingbat.com/prob/p121853
 
Tony Docherty
Bartender
Posts: 2942
59
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Welcome to the Ranch.

Please UseCodeTags (← click) when posting code as it makes it easier for people to read your code. I've added them for you this time.
 
Tony Docherty
Bartender
Posts: 2942
59
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The difference between the 2 blocks of code is where the "return false;" line is. In your code it's inside the for loop so at the end of the first loop iteration it if it hasn't found a 2,2 the code returns false.

BTW in your code, once you fix the above problem, you will get an IndexOutOfBoundsException if the array doesn't contain consecutive 2's. You need to loop until i < array length - 1.

In future when faced with this type of problem add a print statement in the loop so you can see what is happening.
 
Junilu Lacar
Bartender
Pie
Posts: 7319
45
Android Eclipse IDE IntelliJ IDE Java Linux Mac Scala Spring Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Elvin Blen wrote:I want to understand why my code doesn't work as opposed to the code that I found online.

ItDoesntWorkIsUseless (←click)

But let me guess... you get an IndexOutOfBoundsException, right? This indicates that you're trying to access an array element that doesn't exist. Check your code and identify which array index would be invalid at some point.

Edit: ah...I didn't notice the incorrect placement of the return statement that Tony pointed out.
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic