Search code examples
integerdoubleincompatibletypeerror

Incompatible types error with java


Lab7_5.java:79: error: incompatible types: possible lossy conversion from double to int
                extra = minutesOver + .20;
                                    ^
Lab7_5.java:83: error: incompatible types: possible lossy conversion from double to int
                return totalDue;
                       ^
2 errors

I looked around on the website and it turns out other people also had this issue but I looked at the comments and I still don't understand the problem, there's no double in my code why would it say this. And I also don't understand the error saying cannot find symbol. Please help I've really been stuck on this for a while.

code:

import java.util.Scanner;

public class Lab7_5 {
    static Scanner keyboard = new Scanner(System.in);

    public static void main(String[] args) {
        // Declare local variables
        int minutesAllowed, minutesUsed, minutesOver;
        double totalDue; 
        String endProgram = "no";

        // Loop to run program again
        while (endProgram.equals("no")) {
            minutesAllowed = 0;
            minutesUsed = 0;
            totalDue = 0;
            minutesOver = 0;

            // Call functions
            minutesAllowed = getAllowed(minutesAllowed);
            minutesUsed = getUsed(minutesUsed);
            minutesOver = minutesUsed - minutesAllowed;

        if (minutesOver < 0){
            minutesOver = 0;
    }
            totalDue = calcTotal(totalDue, minutesOver, minutesUsed, minutesAllowed);

            // Call functions cont.
            printData(minutesAllowed, minutesUsed, totalDue, minutesOver);

            System.out.println("Do you want to end the program (enter no to process another set of test scores): ");
            endProgram = keyboard.next();

        while (!(endProgram.equals("yes")) && !(endProgram.equals("no"))){
            System.out.println("Please enter a value of yes or no");
            endProgram = keyboard.nextLine();


        }
    }
    }
    public static int getAllowed(int minutesAllowed) {
        System.out.println("How many minutes are allowed: ");

        minutesAllowed = keyboard.nextInt();
    while (minutesAllowed <200 || minutesAllowed >800) {
        System.out.println("Please enter minutes between 200 and 800 ");
        minutesAllowed = keyboard.nextInt();
    }

        return minutesAllowed;
    }

    public static int getUsed(int minutesUsed) {
        System.out.println ("How many minutes were used: ");
        minutesUsed = keyboard.nextInt();

        while (minutesUsed <0) {
            System.out.println("Please enter minutes of at least 0");
            System.out.println("How many minutes were used: ");
            minutesUsed = keyboard.nextInt();

        }
        return minutesUsed;
    }

    public static int calcTotal(double totalDue, int minutesOver, int minutesUsed, int minutesAllowed) {
        int extra;
    if (minutesUsed <= minutesAllowed){
        totalDue = 74.99;
    } else { 
        minutesOver = minutesUsed - minutesAllowed;
        extra = minutesOver * .20;
        totalDue = 74.99 + extra;
        System.out.println ("You were over your minutes by" + minutesOver);
    }
        return totalDue;
    }

    public static void printData(int minutesAllowed, int minutesUsed, double totalDue, int minutesOver) {
        System.out.println("----------------MONTHLY USE REPORT----------------------");
        System.out.println("Minutes allowed were " + minutesAllowed);
        System.out.println("Minutes used were " + minutesUsed);
        System.out.println("Minutes over were " + minutesOver );
        System.out.println("Total due is $ " + totalDue);

    }
}

Solution

  • You declare extra as an int and then make it a double.

    int extra;
    
    extra = minutesOver * .20 // error here
    // example 6 * .20 != an int