Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

Hi,

I am working on below challenge

http://codingbat.com/prob/p101887

I wrote as below

I have two test cases failing. Please advise on how to fix and effective way to write this code.

Expected Run

intMax(1, 2, 3) → 3 3 OK

intMax(1, 3, 2) → 3 3 OK

intMax(3, 2, 1) → 3 3 OK

intMax(9, 3, 3) → 9 9 OK

intMax(3, 9, 3) → 9 9 OK

intMax(3, 3, 9) → 9 9 OK

intMax(8, 2, 3) → 8 8 OK

intMax(-3, -1, -2) → -1 -1 OK

intMax(6, 2, 5) → 6 6 OK

intMax(5, 6, 2) → 6 5 X

intMax(5, 2, 6) → 6 5 X

I am working on below challenge

http://codingbat.com/prob/p101887

I wrote as below

```
public int intMax(int a, int b, int c) {
if(a>b)
{
int minValue=Math.min(a,b);
return a;
}
if(a>c)
{
int minValue=Math.min(a,c);
return a;
}
if(b>c)
{
int minValue=Math.min(b,c);
return b;
}
return c;
}
```

I have two test cases failing. Please advise on how to fix and effective way to write this code.

Expected Run

intMax(1, 2, 3) → 3 3 OK

intMax(1, 3, 2) → 3 3 OK

intMax(3, 2, 1) → 3 3 OK

intMax(9, 3, 3) → 9 9 OK

intMax(3, 9, 3) → 9 9 OK

intMax(3, 3, 9) → 9 9 OK

intMax(8, 2, 3) → 8 8 OK

intMax(-3, -1, -2) → -1 -1 OK

intMax(6, 2, 5) → 6 6 OK

intMax(5, 6, 2) → 6 5 X

intMax(5, 2, 6) → 6 5 X

Experts Exchange Solution brought to you by

Enjoy your complimentary solution view.

Get this solution by purchasing an Individual license!
Start your 7-day free trial.

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

```
public int intMax(int a, int b, int c) {
if((a>b)&(a>c))
{
//int minValue=Math.min(a,b);
return a;
}
if(b>c)
{
//int minValue=Math.min(a,c);
return b;
}
return 0;
/*if(b>c)
{
int minValue=Math.min(b,c);
return b;
}
return c;
}*/
}
```

I tried as above

still failing for few cases

Expected Run

intMax(1, 2, 3) → 3 0 X

intMax(1, 3, 2) → 3 3 OK

intMax(3, 2, 1) → 3 3 OK

intMax(9, 3, 3) → 9 9 OK

intMax(3, 9, 3) → 9 9 OK

intMax(3, 3, 9) → 9 0 X

intMax(8, 2, 3) → 8 8 OK

intMax(-3, -1, -2) → -1 -1 OK

intMax(6, 2, 5) → 6 6 OK

intMax(5, 6, 2) → 6 6 OK

intMax(5, 2, 6) → 6 0 X

Correct for more than half the tests

complete code is

```
public class Test4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int largeValue=intMax(5,6,2);
System.out.println("largeValue is--->"+largeValue);
}
public static int intMax(int a, int b, int c) {
if((a>b)&(a>c))
{
//int minValue=Math.min(a,b);
return a;
}
if(b>c)
{
//int minValue=Math.min(a,c);
return b;
}
return 0;
/*if(b>c)
{
int minValue=Math.min(b,c);
return b;
}
return c;
}*/
}
}
```

You should not return 0 there. If a>b && a>c was false and b > c was also false, you return 0. What should you return there instead?

```
public int intMax(int a, int b, int c) {
return Math.max(Math.max(a,b),c);
}
```

You can do it with nine applications of the Math.max function.

you mean nine separate java apllications. Like nine different java main programs. Please advise

try the below out:

int[] values = {12,45,23,67,45,86,43,67,9

int maxval = values[0];

for (int ind=1; ind < values.length; ind++) {

maxval=Math.max(maxval, values[ind]);

}

System.out.println("Max Value : " + maxval);

No, of course not!

What was meant was this:

```
public int intMax(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9, int p10) {
return Math.max(Math.max(Math.max(Math.max(Math.max(Math.max(Math.max(Math.max(Math.max(p1,p2),p3), p4),p5),p6),p7),p8),p9),p10);
}
```

Which looks (and is) ridiculous, but works. ;-)

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial```
public class Test6 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] values = {12,45,23,67,45,86,43,67,98,5,45,345,67,89,34,56};
int maxval = values[0];
for (int ind=1; ind < values.length; ind++) {
maxval=Math.max(maxval, values[ind]);
}
System.out.println("Max Value : " + maxval);
}
}
```

above code returned 345 which is correct

```
public class Test7 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int largeValue=intMax(5,6,8);
System.out.println("largeValue is--->"+largeValue);
}
public static int intMax(int a, int b, int c) {
if((a>b)&&(a>c))
{
//int minValue=Math.min(a,b);
return a;
}
if(b>c)
{
//int minValue=Math.min(a,c);
return b;
}
return c;
}
}
```

above also returned 8

```
That scenario is covered. Try it with your test data to validate.
```

i validated with test data and works fine. But i did not understand how that scenario is covered. Please advise
Those results are not unexpected.

Did you have reason to think it would do something different?

I agree. The results are correct and expected only.

it was covered only when a<=b, otherwise your initial if(a>b)

would have immediately returned a

but instead of returning a, you could have returned Math.max(a,c);

Which scenario?

If you read your code - which I commented - you simply see that it covers all scenario's:

```
public static int intMax(int a, int b, int c) {
if ((a>b)&&(a>c)) { // a is bigger than b and bigger than c...
return a; // ...so return it
}
// If you're here, you already know that a is not the biggest one, so let's focus on b and c
if (b>c) { // b is bigger than c...
return b; // ... so return b
}
// if you're here, you know that a is not the biggest, b is not the biggest, so...
return c; // c must be the biggest. Well, return it.
}
```

Maybe it's even more clear when you write it with some more else's like this:

```
public static int intMax(int a, int b, int c) {
if ((a>b)&&(a>c)) {
return a;
} else if (b>c) {
return b;
} else {
return c;
}
}
```

Java

From novice to tech pro — start learning today.

Experts Exchange Solution brought to you by

Enjoy your complimentary solution view.

Get this solution by purchasing an Individual license!
Start your 7-day free trial.

if a > b and a > c then return a

if b > c then return b else return c