2014-10-30 111 views
1

我在嘗試編譯文件以運行我的程序時遇到預期的.class錯誤。我有一個Java文件(主)調用另一個類文件名爲Sales的java文件。。編譯時調用錯誤

這裏是我的兩個java文件

import java.util.Scanner; 

public class Sales 
{ 
    double product1 = 2.98; 
    double product2 = 4.50; 
    double product3 = 9.98; 
    double product4 = 4.49; 
    double product5 = 6.87; 
    double sale = 0; 
    public void printHello() 
    { 
    Scanner input = new Scanner (System.in); 
    System.out.print("Please enter a product number."); 
    int userInput = input.nextInt(); 
     while(userInput != 0) 
     { 
      if(userInput >= 1 && userInput <= 5) 
      { 
      switch(userInput) 
      { 
       case 1: product1++; 
        sale += 2.98; 

     System.out.print("How many were sold?");    
     userInput = input.nextInt();  
        break; 


      case 2: product2++; 
        sale += 4.50; 


     System.out.print("How many were sold?"); 
     userInput = input.nextInt();   
        break; 


      case 3: product3++; 
        sale += 9.98; 

     System.out.print("How many break; were sold?"); 
     userInput = input.nextInt(); 
        break; 




      case 4:product4++; 
        sale += 4.49; 

     System.out.print("How many were sold?"); 
     userInput = input.nextInt(); 
        break; 



      case 5: product5++; 
        sale += 6.87; 

     System.out.print("How many were sold?"); 
     userInput = input.nextInt(); 
        break; 


     }//end switch 
     } //end if 
     else if (userInput != 0) 
     System.out.println("ERROR: Incorrect Product Number, Please Try Again"); 
     System.out.print("Please enter a Product Number"); 
     userInput = input.nextInt(); 
    }//end while 
} //end main 
    public void printSales(double product1,double product2,double product3,double product4,double     product5) 
    { 
    System.out.println(); 
    System.out.printf("Product 1: $%.2f\n", product1); 
    System.out.printf("Product 2: $%.2f\n", product2); 
    System.out.printf("Product 3: $%.2f\n", product3); 
    System.out.printf("Product 4: $%.2f\n", product4); 
    System.out.printf("Product 5: $%.2f\n", product5); 
    System.out.printf("The total Cost is: %.2f\n", sale); 
    } //end printSales 
} //end class 

代碼,那麼我的主要:

public class SalesTest 
{ 

public static void main(String[] args) 
{ 
    Sales mySales = new Sales();  
    mySales.printHello(); 
    mySales.printSales(); 
}//end class  
} 

我試着打電話與公共類SalesTest公共類銷售。當我嘗試編譯SalesTest時,我得到:

SalesTest.java:8:error:method printSales in class Sales不能應用於給定的類型; mySales.printSales();

要求:雙,雙,雙,雙,雙 沒有發現參數 原因:實際的和正式的參數列表長度

差異如何解決這個問題?

+0

那麼錯誤消息說這一切,它需要5個雙打,你沒有給它任何班級雙打SalesTest – DreadHeadedDeveloper 2014-10-30 03:44:04

+0

你需要傳遞5個雙打printSales(),就像它在方法簽名中所說:public void printSales(double product1,double product2,double product3,double product4,double product5)。 mySales.printSales(1d,2d,3d,4d,5d);應該管用。 – mttdbrd 2014-10-30 03:44:25

+0

啊,我明白了。我沒有意識到這一點。正在嘗試使用double product1等來調用它。非常感謝。現在,這是工作。 – 2014-10-30 03:55:46

回答

3

這些都是不一樣的方法。

要調用的方法定義爲:

public void printSales(double product1, double product2, double product3, double product4, double product5)

你需要使用類似: mySales.printSales(0, 0.0, 0d, 0f, Double.valueOf(0));

(所有這些形式可以被用來在匹配雙的方法簽名java)

當您通話時: mySales.printSales();

你最終試圖打電話: public void printSales()

你沒有,所以你得到一個錯誤。

這稱爲方法重載。它不僅是方法的名稱,而且是簽名。包括參數。

+0

我同意,這根本沒有幫助 – DreadHeadedDeveloper 2014-10-30 03:45:57

+0

這是正確的答案。 upvoted扭轉我早先的downvote。 – mttdbrd 2014-10-30 03:50:23

+0

好多了,謝謝 – DreadHeadedDeveloper 2014-10-30 03:51:27