2017-11-15 2 views
-1
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 

웹 사이트를 둘러 보았지만 다른 사람들도이 문제를 겪었지만 의견을 보았지만 여전히 문제를 이해하지 못했습니다. 내 코드에 이중성이 없습니다. 이유는 무엇입니까? 그럴거야. 그리고 나는 또한 상징을 찾을 수 없다는 오류를 이해하지 못한다. 나는이 사실을 잠시 동안 붙잡아 두었습니다.Java에서 호환되지 않는 유형 오류

코드 :

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

int와 double을 추가 한 다음 그 결과를 int에 할당합니다. 여기서 의도 한 행동은 무엇입니까? –

+0

'.20'은 double입니다. – SLaks

+0

들여 쓰기를 수정해야합니다. – SLaks

답변

0

당신은 intextra를 선언하고 그것을 double을합니다.

int extra; 

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

그러나, "totalDue"가 반환 요청을 할 때 동일한 문제가 계속 발생하는 방식을 이해하지 못했습니다. –

+0

그 계산은 totalDue 내부에 있기 때문에 – DoesData