2017-11-15 3 views
-1

Ich schaute auf der Website und es stellt sich heraus, andere Leute hatten auch dieses Problem, aber ich schaute auf die Kommentare und ich verstehe immer noch nicht das Problem, es gibt keine Doppel in meinem Code warum Würde es das sagen? Und ich verstehe auch nicht den Fehler sagen kann nicht Symbol finden. Bitte helfen Sie mir, dass ich wirklich eine Weile hier feststecke.Inkompatiblen Typen Fehler mit Java

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); 

    } 
} 
+0

Sie fügen ein int und ein double hinzu und weisen das Ergebnis dann einem int zu. Was ist das beabsichtigte Verhalten hier? –

+0

'.20' ist ein Doppel. – SLaks

+0

Sie sollten Ihren Einzug korrigieren. – SLaks

Antwort

0

Sie erklären extra als int und dann eine double machen.

int extra; 

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

Ok! danke, aber ich verstehe nicht ganz, wie "totalDue" das gleiche Problem hat, wenn ich es frage, zurückzukehren. –

+0

Weil diese Berechnung innerhalb von totalDue ist – DoesData

Verwandte Themen