Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建接受接口对象数组的方法_Java_Arrays_Object - Fatal编程技术网

Java 创建接受接口对象数组的方法

Java 创建接受接口对象数组的方法,java,arrays,object,Java,Arrays,Object,所以,我有一个两部分的问题。我做的第一部分是创建一个接口,然后在两个不同的类中使用该接口。然而,问题的第二部分让我感到困惑。我不理解它的逻辑方面。感觉问题的顺序应该是相反的。为了完成作业的最后一部分,我需要做两件事。如果这里有人能给我一些关于我应该走的方向的小指导,我将不胜感激 第二部分: (1) 在main中创建一个可计算对象数组,并调用sumCalculate方法 在很大程度上我理解这一点,我已经开始做了,但决定开始做(2),因为这对我来说更难。它基本上是创建一个特定大小的可计算对象数组(我

所以,我有一个两部分的问题。我做的第一部分是创建一个接口,然后在两个不同的类中使用该接口。然而,问题的第二部分让我感到困惑。我不理解它的逻辑方面。感觉问题的顺序应该是相反的。为了完成作业的最后一部分,我需要做两件事。如果这里有人能给我一些关于我应该走的方向的小指导,我将不胜感激

第二部分: (1) 在main中创建一个可计算对象数组,并调用sumCalculate方法

在很大程度上我理解这一点,我已经开始做了,但决定开始做(2),因为这对我来说更难。它基本上是创建一个特定大小的可计算对象数组(我选择了5个),并用不同的可计算对象(在我的示例中可以是矩形或正方形)填充它。但这个问题的后半部分让我困惑?我是在调用问题2中要使用的sumCalculate方法吗?或者在我使用(2)方法之前就调用它

(2) 创建一个方法,该方法接受可计算对象的数组,并对每个对象调用calculate返回的值求和

我想在问题(2)中弄清楚的是。当它要求我制定方法时?这是否意味着我在接口中创建了一个名为sumCalc的新方法,该方法具有接受可计算对象数组的参数?然后对返回的值求和。我假设我将计算方法返回的计算值加倍

我想问问我的教授,但我决定选的这位教授已经养成了一个习惯,那就是太难接近了。很抱歉打扰你们,这很可能是一个基本而不难的问题

interface Calculatable {

   public double calculate(int x);



}

class square implements Calculatable {

   public double side;


   square(double side){
      this.side = side;
   }

   public double getside(){
      return side;
   }

   public double calculate(int x) {
      double perimeter = side * 4;
      System.out.println("This calculate method will output the perimeter divided by the parameter x");
      double calculation = perimeter / x;
      System.out.println("The original perimeter was " + perimeter + ". And the calculated perimeter is " + calculation +".");
      return calculation; 
   }


}

public class rectangle implements Calculatable {

   public double length;
   public double width;

   rectangle(double length , double width){

      this.length = length;
      this.width = width;
   }

   public double getlength(){
      return length;
   }
   public double getwidth(){
      return width;
   }

   public double calculate(int x) {
      double perimeter = 2 * (length + width);
      double calculation = 2 * perimeter;
      System.out.println("This will return the perimeter of the rectangle times the x paramater");
      System.out.println("Your current perimeter is " + perimeter + " and your perimeter after the calculation is " + calculation + ".");
      return calculation;

   }


   public static void main(String [] args){

      Calculatable perimeter1 = new rectangle(20.5 , 50);
      perimeter1.calculate(5);
      Calculatable perimeter2 = new square(10.5);
      perimeter2.calculate(2);
      Calculatable[] perimetersums = new Calculatable[5];
      perimetersums[0] = new rectangle(20.5 , 50);
      perimetersums[1] = new rectangle(10 , 25);


   }
}

我会在main方法旁边创建sum,然后结束它。课程是实现一个接口方法并使用它


除此之外,我建议您阅读Java命名约定,并相应地修改代码。

按照我的理解,您不应该更改接口,特别是如果接口是提供给您的

只需将您的
sumCalculate
写在
main
方法下面,如下所示

private static double sumCalculate(Calculateable[] c) {
    // do your sum up and return the result
}
double sum = sumCalculate(perimetersums);
在主方法中调用它,如下所示

private static double sumCalculate(Calculateable[] c) {
    // do your sum up and return the result
}
double sum = sumCalculate(perimetersums);

我脑子里没有什么困惑。。在实现矩形中,您没有在计算方法中使用x。我稍微改变了整个班级的结构。。请看。。我想它会帮助你

public interface Calculatable {

     public double calculate(int x);

     public double getPerimeter();

} 

public class square implements Calculatable {

    public double side;
    private double perimeter;


       square(double side){
          this.side = side;
       }

       public double getside(){
          return side;
       }

       public double calculate(int x) {
          double perimeter = side * 4;
          System.out.println("This calculate method will output the perimeter divided by the parameter x");
          double calculation = perimeter / x;
          System.out.println("The original perimeter was " + perimeter + ". And the calculated perimeter is " + calculation +".");
          this.perimeter=calculation;
          return calculation; 
       }

    @Override
    public double getPerimeter() {
        // TODO Auto-generated method stub
        return perimeter;
    }
}


public class rectangle implements Calculatable {

       public double length;
       public double width;

       private double perimeter;

       rectangle(double length , double width){

          this.length = length;
          this.width = width;
       }

       public double getlength(){
          return length;
       }
       public double getwidth(){
          return width;
       }

       public double calculate(int x) {
          double perimeter = 2 * (length + width);
          double calculation = 2 * perimeter;
          System.out.println("This will return the perimeter of the rectangle times the x paramater");
          System.out.println("Your current perimeter is " + perimeter + " and your perimeter after the calculation is " + calculation + ".");
          this.perimeter=calculation;
          return calculation;
       }

    @Override
    public double getPerimeter() {
        // TODO Auto-generated method stub
        return perimeter;
    }


}



public class MainMethod {

    public static void main(String[] args) {

         Calculatable perimeter1 = new rectangle(20.5 , 50);
          perimeter1.calculate(5);
          Calculatable perimeter2 = new square(10.5);
          perimeter2.calculate(2);
          Calculatable[] perimetersums = new Calculatable[5];
          perimetersums[0] = perimeter1; //new rectangle(20.5 , 50);
          perimetersums[1] = perimeter2;// new rectangle(10 , 25);

          System.out.println("the sum is= "+sumCalculate(perimetersums));
    }


    private static double sumCalculate ( Calculatable[] perimetersums)
    {
        double sum=0.0;
        for(int i=0;i<perimetersums.length;i++)
        {
            Calculatable cal=perimetersums[i];
            if(cal!=null)
             sum=sum+cal.getPerimeter();
        }
        return sum;
    }

}
可计算的公共接口{
公共双计算(int x);
公共双边界();
} 
公共类square实现可计算{
公共双边;
私人双周界;
正方形(双面){
这个边=边;
}
公共双getside(){
返回侧;
}
公共双计算(整数x){
双周长=侧面*4;
System.out.println(“此计算方法将输出周长除以参数x”);
双重计算=周长/x;
System.out.println(“原始周长为“+周长+”,计算周长为“+计算+”);
这个。周长=计算;
收益计算;
}
@凌驾
公共双边界{
//TODO自动生成的方法存根
返回周长;
}
}
公共类矩形实现可计算{
公共双倍长度;
公共双宽度;
私人双周界;
矩形(双倍长,双倍宽){
这个长度=长度;
这个。宽度=宽度;
}
公共双getlength(){
返回长度;
}
公共双getwidth(){
返回宽度;
}
公共双计算(整数x){
双周长=2*(长度+宽度);
双重计算=2*周长;
System.out.println(“这将返回矩形的周长乘以x参数”);
System.out.println(“当前周长为“+周长+”,计算后周长为“+计算+”);
这个。周长=计算;
收益计算;
}
@凌驾
公共双边界{
//TODO自动生成的方法存根
返回周长;
}
}
公共类方法{
公共静态void main(字符串[]args){
可计算周长1=新矩形(20.5,50);
周长1.计算(5);
可计算周长2=新的正方形(10.5);
周长2.计算(2);
可计算[]周长=新的可计算[5];
周长[0]=周长1;//新矩形(20.5,50);
周长[1]=周长2;//新矩形(10,25);
System.out.println(“总和为=”+sumCalculate(周长));
}
专用静态双池计算(可计算[]周长)
{
双和=0.0;

对于(inti=0;i我稍微改变了类结构

public interface Calculatable {

     public double calculate();
}



public class square implements Calculatable {

    private final int x=2;
    public double side;

       square(double side){
          this.side = side;
       }

       public double getside(){
          return side;
       }

       public double calculate() {
          double perimeter = side * 4;
          System.out.println("This calculate method will output the perimeter divided by the parameter x");
          double calculation = perimeter / x;
          System.out.println("The original perimeter was " + perimeter + ". And the calculated perimeter is " + calculation +".");
          return calculation; 
       }


}

public class rectangle implements Calculatable {

       private final int x=5;
       public double length;
       public double width;


       rectangle(double length , double width){

          this.length = length;
          this.width = width;
       }

       public double getlength(){
          return length;
       }
       public double getwidth(){
          return width;
       }

       public double calculate() {
          double perimeter = 2 * (length + width);
          double calculation = 2 * perimeter;
          System.out.println("This will return the perimeter of the rectangle times the x paramater");
          System.out.println("Your current perimeter is " + perimeter + " and your perimeter after the calculation is " + calculation + ".");
          return calculation;
       }


}

public class MainMethod {

    public static void main(String[] args) {

         Calculatable perimeter1 = new rectangle(20.5 , 50);
         // perimeter1.calculate(5);
          Calculatable perimeter2 = new square(10.5);
          //perimeter2.calculate(2);
          Calculatable[] perimetersums = new Calculatable[5];
          perimetersums[0] = new rectangle(20.5 , 50);
          perimetersums[1] = new rectangle(10 , 25);

          System.out.println("the sum is= "+sumCalculate(perimetersums));
    }


    private static double sumCalculate ( Calculatable[] perimetersums)
    {
        double sum=0.0;
        for(int i=0;i<perimetersums.length;i++)
        {
            Calculatable cal=perimetersums[i];
            if(cal!=null)
            {
                sum=sum+cal.calculate();
            }
        }
        return sum;
    }

}
可计算的公共接口{
公共双重计算();
}
公共类square实现可计算{
私人最终整数x=2;
公共双边;
正方形(双面){
这个边=边;
}
公共双getside(){
返回侧;
}
公共双计算(){
双周长=侧面*4;
System.out.println(“此计算方法将输出周长除以参数x”);
双重计算=周长/x;
System.out.println(“原始周长为“+周长+”,计算周长为“+计算+”);
收益计算;
}
}
公共类矩形