【问题标题】:Return types and Methods in javajava中的返回类型和方法
【发布时间】:2018-05-19 20:36:03
【问题描述】:

你们能帮我修复以下程序吗?

它给了我以下错误:

错误:类 Pset3Ex4 中的方法 absoluteValue 不能应用于给定类型;

import java.util.Scanner;

public class Pset3Ex4 {

    public static void main(String[] args) {
        absoluteValue();
    }

    public double absoluteValue(double d) {
        Scanner sc = new Scanner(System.in);

        System.out.print("Input a number: ");
        d = sc.nextDouble();

        if (d < 0) {
            return -d;
        } else {
            return d;
        }
    }
}

【问题讨论】:

    标签: java methods return


    【解决方案1】:

    你正在调用方法

     absoluteValue() 
    

    没有任何参数,而您定义了一个带有双参数的方法

    absoluteValue(double d), 
    

    所以java编译器没有找到方法

    absoluteValue() 
    

    没有参数。

    其次,您试图从不允许的静态 main 方法调用非静态方法。

    【讨论】:

      【解决方案2】:

      您的absoluteValue(double d) 既不是静态的,也不接受零参数。因此,当您尝试编译它时,您会得到一个错误。

      要解决这个问题,只需更改 absoluteValue 的签名和修饰符:

      public static double absoluteValue() {
          double d;
          ...
      

      【讨论】:

        【解决方案3】:

        首先,您需要向该函数传递一个参数(一个双参数!) 其次,这个函数需要是静态的,它是一个尚未被实例化的类的一部分。如果您创建一个新实例,则意味着:

         Pset3Ex4 p = new Pset3Ex4();
        

        您将能够从 p(新实例)调用该函数。 否则,您必须将此方法设为静态,这样您就可以访问它而无需创建它的新实例。

        【讨论】:

          【解决方案4】:
          1. 该函数的签名是absoluteValue(double d),因此它需要double 作为参数,但您可以像absoluteValue(); 一样调用它而没有。您需要将函数签名设置为

            public double absoluteValue(double d){
                //...
            }
            
          2. 你的函数不是静态的,它需要调用一个实例,所以:

            • 使用实例

              public static void main(String[] args){
                  new Pset3Ex4().absoluteValue();
              }
              
            • 静态化

              public static double absoluteValue(double d){
                   //...
              }
              

          【讨论】:

            【解决方案5】:

            检查这是否是您正在查看的内容。方法 'absoluteValue' 不是静态的,当您在 main 中调用该方法时,您没有传递任何参数。

            import java.util.Scanner;
            
            public class Pset3Ex4 {
            
            public static void main(String[] args){
            System.out.print("Result is " + absoluteValue());
            }
            
            public static double absoluteValue(){
            Scanner sc = new Scanner(System.in);
            
            System.out.print("Input a number: ");
            d = sc.nextDouble();
            
            if (d < 0){
            return - d; 
            }
            else {
            return d;
            }
            
            }  
            }
            

            【讨论】:

            • 你不能正确缩进并解释你做了什么吗?你的答案没有价值
            • 你能再看一遍答案吗?详细信息在那里,如果您正在查看除添加的详细信息之外的任何特定内容,请告诉我。也不知道你为什么要投反对票:-D 哈哈很好
            猜你喜欢
            • 2013-11-24
            • 2014-05-27
            • 1970-01-01
            • 1970-01-01
            • 2013-08-19
            • 2012-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多