Solved

# last digit ending with 7

Posted on 2014-10-10
109 Views
Hi,
I am trying below challenge

http://codingbat.com/prob/p125339

I wrote as below

public boolean lastDigit(int a, int b) {
if(a%10==7 && b%7==7){
return true;
}
return false;

}

I have test cases failing as below
Expected      Run
lastDigit(7, 17) → true      false      X
lastDigit(6, 17) → false      false      OK
lastDigit(3, 113) → true      false      X
lastDigit(114, 113) → false      false      OK
lastDigit(114, 4) → true      false      X
lastDigit(10, 0) → true      false      X
lastDigit(11, 0) → false      false      OK

How to improve and fix my program
0
Question by:gudii9

LVL 7

Author Comment

``````public boolean lastDigit(int a, int b) {
if(a%10==7&& b%10==7){
return true;
}

if(a%10==7&& b%10==7){
return true;
}

if(a%10==1&& b%10==1){
return true;
}

if(a%10==2&& b%10==2){
return true;
}

if(a%10==3&& b%10==3){
return true;
}

if(a%10==7&& b%10==7){
return true;
}

if(a%10==4&& b%10==4){
return true;
}

if(a%10==5&& b%10==5){
return true;
}

if(a%10==6&& b%10==6){
return true;
}

if(a%10==8&& b%10==8){
return true;
}

if(a%10==9&& b%10==9){
return true;
}

if(a%10==0&& b%10==0){
return true;
}
return false;

}
``````

Expected      Run
lastDigit(7, 17) → true      true      OK
lastDigit(6, 17) → false      false      OK
lastDigit(3, 113) → true      true      OK
lastDigit(114, 113) → false      false      OK
lastDigit(114, 4) → true      true      OK
lastDigit(10, 0) → true      true      OK
lastDigit(11, 0) → false      false      OK

Actually i modifed the code but still looks lengthy code. Please advise how to simplify and improve my code above
0

LVL 27

Expert Comment

What is wrong with the solution given when you click on the "Show Solution" button(at posted link)?
0

LVL 84

Accepted Solution

ozo earned 350 total points
return a%10 == b%10;
0

LVL 7

Author Comment

I would like to work the solution myself and improve and correct my own mistakes. I am not looking at the solutions at this point as they seems too complex for me at times.
0

LVL 84

Expert Comment

return (a-b)%10 == 0;
0

LVL 7

Author Comment

return(a % 10 == b % 10);

return (a-b)%10 == 0;
0

LVL 26

Assisted Solution

dpearson earned 150 total points
a % 10 returns the remainder when you divide by 10.  So "15 % 10" is 5.

So (a % 10 == b % 10) is true when both a and b have the same remainder when divided by 10.  E.g 25 and 15.

(a - b) % 10 returns the remainder when you divide the difference between the two values by 10.

So if we go back to our example (25 and 15) then the difference is 10 and if we figure out the remainder when we divide that by 10, we'll get 0.

So they're just 2 equivalent ways of saying the same thing.
For my money "a % 10 == b % 10" is the clearer of the two.

Doug
0

LVL 7

Author Comment

``````So if we go back to our example (25 and 15)
``````

instead if i pass (15 and 25) difference is -10(not positive number)
still the reminder does not effect right? it is still 0.

0

LVL 84

Expert Comment

There are differences in how various languages handle % for negative integers, but all of them should agree when the answer is 0
0

## Featured Post

### Suggested Solutions

Whether you’re a college noob or a soon-to-be pro, these tips are sure to help you in your journey to becoming a programming ninja and stand out from the crowd.
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.