我如何使用包装类来调用main中的方法?

时间:2016-11-20 17:34:48

标签: java methods

public static void main(String[] args) {
     Double ans1 = add(5, 9);
     Number ans2 = add(new Integer(3), new Double(2.4));
     double ans3 = add(10, 3.2);
     System.out.println(answer1 + " " + answer2 + " " + answer3);
   }

鉴于上面的主要方法,我如何创建一个静态方法(而不是一组重载方法),这反过来可以成功调用main中的方法?

提前致谢!

3 个答案:

答案 0 :(得分:0)

  

编写一个静态方法(不是一组重载方法)   可以通过main中的所有方法成功调用。

这是非常基础的,您可以通过创建新的static add()方法(单个方法包含对不同重载的add方法的所有调用的代码)来执行此操作,如下所示:

public static void main(String[] args) {
     add();
}
public static void add() {
     Double ans1 = add(5, 9);
     Number ans2 = add(new Integer(3), new Double(2.4));
     double ans3 = add(10, 3.2);
     System.out.println(answer1 + " " + answer2 + " " + answer3);
}

答案 1 :(得分:0)

行。尽管他使用了错误的术语,但我想我明白了老师想要的东西。他希望你编写一个独特的静态add()方法。在将这个独特的add()方法添加到代码中之后,代码应该编译并运行。

由于使用int,Integer,Double和double类型的参数调用该方法,因此参数类型必须是所有这些类型的父类(在装箱/取消装箱后)。例如Number或Object。

由于返回的值被赋值为Double,Number和double类型的变量,因此返回类型必须是所有这些的公共类或子类子类(在装箱/取消装箱后)。

因此,候选人将是:

lst = [(10, 'ATAGCTAT'), (4, 'TTAGCTA'), (6, 'AATTAATCGAT'), (6, 'GCTATAGC')]
lst_sorted = sorted(lst, key=lambda x: (x[0], len(x[1])))
print(lst_sorted)
# [(4, 'TTAGCTA'), (6, 'GCTATAGC'), (6, 'AATTAATCGAT'), (10, 'ATAGCTAT')]

当然,private static double add(Object i, Object i1) { return 0; } 变量也需要重命名为ansX,否则代码永远不会编译。

我想我们也可以安全地假设answerX应该添加参数。我把它作为你的练习。

答案 2 :(得分:0)

为了通过add方法成功调用main方法,您需要确定用于返回值和参数的类型。

这是一个模板:

private static ??? add(??? a, ??? b) {
    return a + b;
}

如您所见,main使用各种参数调用add,并将结果存储在不同类型的变量中。

如果您分析main方法,您会发现add方法必须能够接受以下类型的参数:

(int, int)
(Integer, Double)
(int, double)

可以推断,intdoubleIntegerDouble可以隐式转换为参数类型。如果你做一点思考,你就会知道double是满足这个要求的类型之一。这意味着参数可以是tyoe double

并且它必须能够返回与以下类型兼容的值:

Double
double
Number

可以推断,返回类型必须能够被隐含地转换为DoubledoubleNumberdouble也满足此要求。这意味着该方法也返回一个double!

这是完成的方法:

private static double add(double a, double b) {
    return a + b;
}