【问题标题】:.class calling error when compiling.class 编译时调用错误
【发布时间】:2014-10-30 03:42:24
【问题描述】:

我在尝试编译文件以运行我的程序时收到预期的 .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 调用公共类 Sales。当我尝试编译 SalesTest 时,我得到:

SalesTest.java:8:error: 类 Sales 中的方法 printSales 不能应用于给定类型; mySales.printSales();

必填:双,双,双,双,双 没有发现任何论据 原因:实际参数列表和形式参数列表的长度不同

我该如何解决这个问题?

【问题讨论】:

  • 嗯,错误信息说明了一切,它需要 5 个双打,而您没有在 SalesTest 类中给它任何双打
  • 您需要将 5 个 double 传递给 printSales(),正如方法签名中所说:public void printSales(double product1,double product2,double product3,double product4,double product5)。 mySales.printSales(1d, 2d, 3d, 4d, 5d);应该工作。
  • 啊,我明白了。我没有意识到这一点。试图使用双乘积1等来调用它。非常感谢。现在它正在工作。

标签: java


【解决方案1】:

这些方法不一样。

调用定义为的方法:

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

你没有,所以你得到一个错误。

这称为方法重载。它不仅是必须匹配的方法的名称,而且是签名。这包括参数。

【讨论】:

  • 我同意,这根本没有帮助
  • 这是正确答案。赞成推翻我之前的反对票。
猜你喜欢
  • 1970-01-01
  • 2022-01-18
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2012-12-21
  • 2020-09-01
  • 2021-08-07
相关资源
最近更新 更多