-1

Can someone tell me why I'm getting an error called incompatible types? This is the full error: PayrollTest.java:26: error: incompatible types: possible lossy conversion from double to int.

01: import java.util.Scanner;
02:
03: public class PayrollTest{
04:
05:     public static void assignEmployeeHoursAndPayrates( Payroll payrollObject ) {
06:         Scanner keyboard = new Scanner( System.in );
07:         int employeeHours;
08:         double employeePayRate;
09:
10:         for( int employeeIndex = 0; employeeIndex < payrollObject.getAllEmployeeIds().length; employeeIndex++ ) {
11:             System.out.println( "Please enter the hours for employee " + payrollObject.getAllEmployeeIds()[ employeeIndex ] );
12:             employeeHours = keyboard.nextInt();
13:             while( employeeHours < 0 ) {
14:                 System.out.println( "Please enter POSITIVE hours for employee " +
15:                                    payrollObject.getAllEmployeeIds()[ employeeIndex ] );
16:                 employeeHours = keyboard.nextInt();
17:             }
18:             payrollObject.setEmployeeHours( employeeHours, employeeIndex );
19:             System.out.println( "What's the payrate for employee " + payrollObject.getAllEmployeeIds()[ employeeIndex ] );
20:             employeePayRate = keyboard.nextDouble();
21:             while( employeePayRate < 6.00 ) {
22:                 System.out.println( "What's the payrate for employee " +
23:                                    payrollObject.getAllEmployeeIds()[ employeeIndex ] + "( $6 or ABOVE please)" );
24:                 employeePayRate = keyboard.nextDouble();
25:             }
26:             payrollObject.setEmployeePayRate( employeePayRate, employeeIndex );
27:         }
28:     }
29:
30:     public static void displayEmployeeWages( Payroll payrollObject) {
31:         for( int employeeIndex = 0; employeeIndex < payrollObject.getAllEmployeeIds().length; employeeIndex++ ) {
32:             System.out.println( "The employee with id number " + payrollObject.getAllEmployeeIds()[ employeeIndex ] +
33:                                " worked for " + payrollObject.getAllEmployeeHours()[ employeeIndex ] +
34:                                " hours and earned " +
35:                                String.format( "$%,.2f" , payrollObject.getAllEmployeeWages()[ employeeIndex ] ) );
36:         }
37:     }
38:
39:     public static void main( String [ ] args ) {
40:         Payroll employeeInfo = new Payroll();
41:         assignEmployeeHoursAndPayrates( employeeInfo );
42:         employeeInfo.calculateWages();
43:         displayEmployeeWages( employeeInfo );
44:
45:         int singleEmployeeId = 7895122;
46:
47:         if( employeeInfo.getEmployeeWagesById( singleEmployeeId ) != -1 ) {
48:             System.out.println( "The single employee with id " + singleEmployeeId + " earned " +
49:                                String.format( "$%,.2f", employeeInfo.getEmployeeWagesById( singleEmployeeId ) ) );
50:         } else{
51:             System.out.println( "The single employee with id " + singleEmployeeId + " wasn't found" );
52:         }
53:     }
54: }
Andreas
  • 154,647
  • 11
  • 152
  • 247
  • 1
    Where is `Payroll` class? – MaxZoom Apr 30 '17 at 01:14
  • Because you're assignment a `double` value to an `int` variable in line 26 of `PayrollTest.java`. Which part of the error message didn't you understand? *Assuming* line 26 is `payrollObject.setEmployeePayRate( employeePayRate, employeeIndex )`, it means that the first parameter is an `int`, but `employeePayRate` is a double. Of course, that is an assumption, since we don't know what line 26 is, or how `setEmployeePayRate()` is declared. – Andreas Apr 30 '17 at 01:14
  • I'm really bad at programming, so can someone show me or is that to much to ask? – Moochie Garcia Apr 30 '17 at 01:22
  • 1
    @MoochieGarcia - The solution to being bad at programming is to get better ... by trying to solve the problems yourself. (I'm guessing that this is a homework exercise, and the point of homework is so that you can learn, by doing rather than by asking.) We have explained what the error message means. You now need to apply the knowledge that you have gained by reading and understanding the explanation. – Stephen C Apr 30 '17 at 01:56

1 Answers1

0

Possible fix

In your Payroll class go the method setEmployeePayRate()

Now do this. Change int to double

void setEmployeePayRate(double employeePayRate, int employeeIndex)
{
 // your code goes here
}

Also you need to change some variable from int to double inside the method

Kangkan
  • 127
  • 1
  • 2
  • 10