如何调用和测试同名方法?

时间:2016-11-09 18:46:49

标签: java

我已经获得了一项旨在测试计算器有效性的作业。他们给了我们一个默认类,看起来像这样:

public class Calculator {
        Double x;
        /*
        * Chops up input on ' ' then decides whether to add or multiply.
        * If the string does not contain a valid format returns null.
        */
        public Double x(String x){
                return new Double(0);
        }

        /*
        * Adds the parameter x to the instance variable x and returns the answer as a Double.
        */
        public Double x(Double x){
                System.out.println("== Adding ==");
                return new Double(0);
        }

        /*
        * Multiplies the parameter x by instance variable x and return the value as a Double.
        */
        public Double x(double x){
                System.out.println("== Multiplying ==");
                return new Double(0);
        }

}

您可以扩展这个旨在成为测试工具的课程。以下说明如下:

  1. 创建一个名为testParser()的方法。
  2. 测试x(" 12 + 5")返回值为17的Double。
  3. 测试x(" 12 x 5")返回值为60的Double。
  4. 测试x(" 12 [3"]返回null,因为[不是有效的运算符。
  5. 以下是我目前所做的更改:

    public class TestCalculator {
            Double x;
            /*
            * Chops up input on ' ' then decides whether to add or multiply.
            * If the string does not contain a valid format returns null.
            */
            public Double x(String x){
                    return new Double(0);
            }
            public void testParsing() {
    
    
    
            }
            /*
            * Adds the parameter x to the instance variable x and returns the answer as a Double.
            */
            public Double x(Double x){
                    System.out.println("== Adding ==");
                    x("12 + 5");
                    return new Double(0);
            }
            /*
            * Multiplies the parameter x by instance variable x and return the value as a Double.
            */
            public Double x(double x){
                    System.out.println("== Multiplying ==");
                    x("12 x 5");
                    return new Double(0);
            }
    }
    

    我最担心的是我如何能够调用实际方法,因为它们没有被赋予任何唯一的名称来调用,并且您无法更改方法的名称,因为这会更改数据类型。另外为什么他们使用String数据类型来添加和乘数?有关如何开始编写testParsers()方法的任何帮助都会非常有用。感谢。

2 个答案:

答案 0 :(得分:1)

您正在处理的是方法重载。您有3个具有相同名称的方法,但它们具有不同的方法签名。要调用特定方法,只需传入适当的参数即可。在这种情况下,您可以:

 Calculator c = new Calculator();
 String string = "b";
 Double doubleObject = 1;
 double doublePrimitive = 2;

c.x(string);
c.x(doubleObject);
c.x(doublePrimitive);

Java将根据传入的参数调用正确的方法。

答案 1 :(得分:0)

 Calculator c = new Calculator();
 String p1 = "a";
 Double p2 = 1;
 double p3 = 2;

c.x(p1);
c.x(p2);
c.x(p3);

所有3个调用都会调用不同的方法。