Jbaz has made two small mistakes .. not his fault, he is new to this section and hasn't programmed in a while.
First mistake:
We don't fix homework assignments. We do talk you through them, though.
You need to examine the logic of your program. At the very least, you need to identify where the problem lies.
Code:
double lifeboatsNeeded = passangersNumber / maxPassangersLifeboat;
...
System.out.println("A minimum of " + (int)lifeboatsNeeded + " lifeboats are required to rescue everyone on board of " + shipName + ".\n");
The first line determines the number of lifeboats needed. Easy enough.
The second line casts the double as an integer. This, I assume, is your attempt to round the answer. This is also the solution that Jbaz offered.
So ... when java casts a double to an int ... what does it do? If you don't know the answer .. why are you doing it? Obviously, it isn't doing what you want. When you cast a double as an int, java simply discards everything after the decimal.
Code:
double smallNine = 9.1
int nine = (int) smallNine
Here, the value of nine is 9
Code:
double bigNine = 9.9
int nine = (int) bigNine
Here, the value of nine is .. also 9.
So, if you wanted to always round DOWN, you'd have your answer.
What you want to do, though, is always round up. The only time you don't round up is when you have a integer.
9.1 ... round up
9.5 ... round up
9.0 ... do not round
Thus, what you need to do is identify whether your value is an integer and, if so, leave it alone. If not, add one and discard everything after the decimal. I've already explained how to get rid of everything after the integer. What you need to do is figure out how to determine if your number is an integer. Hint: modulus.