有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java方法无法应用于给定类型

public class HurdalQuentonA2Q1 {

  public static void main(String[] args) {

    double kgs ;

    double lbs ;

    double convertLBtoKG = convertLBtoKG(kgs, lbs) ;

  }
  static double convertLBtoKG(double lbs) {

    return lbs * 0.454 ; 


  }

  static double readWeight() {

    Scanner input = new Scanner(System.in) ;
    System.out.println("Enter your preferred system of weight measurement, k(for kg) or, p(for lb)") ;
    String userinput = input.nextLine() ;
      if(userinput == "p") {
        Scanner keyboard = new Scanner(System.in) ;
        System.out.println("Enter your dog's weight in lbs") ;
         double lbs = keyboard.nextDouble() ; 
          double kgs = convertLBtoKG ;

编译时会弹出一个错误

method convertLBtoKG in class HurdalQuentonA2Q1 cannot be applied to given types
required: double
found: double,double

我不知道是什么原因造成的


共 (6) 个答案

  1. # 1 楼答案

    编译后,编译器将尝试匹配参数的数量及其类型。在这种情况下,您使用两个参数进行调用,但只接受一个参数

  2. # 2 楼答案

    你的方法只得到1个双参数。 但是您在这里调用了convertLBtoKG(kgs,lbs)2参数

  3. # 3 楼答案

    你的convertLBtoKG方法:

    static double convertLBtoKG(double lbs) {
    

    定义为需要一个double参数(double lbs)并返回一个double(单词static后的double)的方法。要使用它,您必须以与概要文件一致的方式调用它:给它一个double参数,然后对方法调用的值进行处理,这将是方法返回的值。因此

    double convertLBtoKG = convertLBtoKG(kgs, lbs) ;
    

    你想要

    lbs = convertLBtoKG(kgs);  // THIS IS STILL WRONG, SEE BELOW
    

    (不要说double lbs = ...,因为您之前已经声明了double lbs;

    此外,在方法调用中使用kgs之前,您需要为它分配一些内容

    编辑:虽然我试图修复导致错误的那一行,但它完全错了,不属于那里。实际执行转换的代码位于readWeight中,但您从未调用readWeight。你需要在main中添加一些东西来调用它。然后,在readWeight中,而不是这一行:

          double kgs = convertLBtoKG ;
    

    这是您想要调用convert方法的地方:

          double kgs = convertLBtoKG(lbs);
    

    我认为你需要仔细研究程序的流程是如何工作的。你的main程序必须调用readWeight才能调用readWeight中的代码;该语言不会自动将事物连接在一起,因为您在mainreadWeight中都放置了convertLBtoKG

  4. # 4 楼答案

    ConvertlTokg的函数声明只允许传递一个参数,但同时传递lbs和KG

  5. # 5 楼答案

    convertLBtoKG方法只有一个参数,但您用两个参数调用它

    static double convertLBtoKG(double lbs) 
    

    将方法调用更改为:

    double convertLBtoKG = convertLBtoKG(lbs) ;
    
  6. # 6 楼答案

    您正在将两个double值传递给一个只接受单个double参数的方法。要么重载该方法以创建一个接受两个double的方法,要么使用适当的参数调用它