Java 创建接受接口对象数组的方法
所以,我有一个两部分的问题。我做的第一部分是创建一个接口,然后在两个不同的类中使用该接口。然而,问题的第二部分让我感到困惑。我不理解它的逻辑方面。感觉问题的顺序应该是相反的。为了完成作业的最后一部分,我需要做两件事。如果这里有人能给我一些关于我应该走的方向的小指导,我将不胜感激 第二部分: (1) 在main中创建一个可计算对象数组,并调用sumCalculate方法 在很大程度上我理解这一点,我已经开始做了,但决定开始做(2),因为这对我来说更难。它基本上是创建一个特定大小的可计算对象数组(我选择了5个),并用不同的可计算对象(在我的示例中可以是矩形或正方形)填充它。但这个问题的后半部分让我困惑?我是在调用问题2中要使用的sumCalculate方法吗?或者在我使用(2)方法之前就调用它 (2) 创建一个方法,该方法接受可计算对象的数组,并对每个对象调用calculate返回的值求和 我想在问题(2)中弄清楚的是。当它要求我制定方法时?这是否意味着我在接口中创建了一个名为sumCalc的新方法,该方法具有接受可计算对象数组的参数?然后对返回的值求和。我假设我将计算方法返回的计算值加倍 我想问问我的教授,但我决定选的这位教授已经养成了一个习惯,那就是太难接近了。很抱歉打扰你们,这很可能是一个基本而不难的问题Java 创建接受接口对象数组的方法,java,arrays,object,Java,Arrays,Object,所以,我有一个两部分的问题。我做的第一部分是创建一个接口,然后在两个不同的类中使用该接口。然而,问题的第二部分让我感到困惑。我不理解它的逻辑方面。感觉问题的顺序应该是相反的。为了完成作业的最后一部分,我需要做两件事。如果这里有人能给我一些关于我应该走的方向的小指导,我将不胜感激 第二部分: (1) 在main中创建一个可计算对象数组,并调用sumCalculate方法 在很大程度上我理解这一点,我已经开始做了,但决定开始做(2),因为这对我来说更难。它基本上是创建一个特定大小的可计算对象数组(我
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(“原始周长为“+周长+”,计算周长为“+计算+”);
收益计算;
}
}
公共类矩形