gpt4 book ai didi

java - 从 Java 中的方法返回类时的方法规范

转载 作者:行者123 更新时间:2023-12-01 14:20:23 26 4
gpt4 key购买 nike

坦率地说,这是家庭作业的一部分。我根本不想作弊。相反,我已经完成了大约 60% 的作业,现在我陷入了困境,因为我不明白规范中对我必须编写/使用的方法之一的要求。

背景:作业涉及编写一个包含 2 个类的程序,一个是 main 类,另一个称为 VectorADT。 VectorADT 类(简单来说)应该有两个实例变量数组(它们是此赋值范围内的“vector ”)以及一些用于操作这两个数组的实例方法(也存在一些静态方法)。

我的问题:我必须编写的一种方法是通过添加数组的相应槽来将两个 vector (在本例中为数组)相加。假设两个数组的大小相同!我设法完成了所有这些,然后要求我返回一个包含两个给定 VectorADT 参数 (v1 + v2) 之和的 VectorADT。 返回 VectorADT 是什么意思?这不是类(class)的名字吗?在这种情况下,我传递给这个 add 方法的对象的类型是什么? 物理上不明白我的 return 语句应该在 add 方法中是什么,以及我应该将 return 分配给什么(在我的 main 方法中)。

方法规范:公共(public)静态 VectorADT 添加(VectorADT v1,VectorADT v2)生成并返回两个给定 VectorADT 的总和。注意, vector 加法是通过将每个 vector 的对应元素相加来定义和 vector 的对应元素。

参数:v1 - 第一个 VectorADTv2 - 第二个 VectorADT

前提条件:v1和v2引用的VectorADT对象已经实例化,并且大小相同。

返回:包含两个给定 VectorADT 参数 (v1 + v2) 之和的 VectorADT。

抛出:IllegalArgument - 指示 v1 或 v2 为空。InvalidSizeException- 指示 v1 和 v2 的大小不同。

我编写的代码:

class VectorOperations
{
public static void main(String[] args)
{
//blue and yellow are used as an example here.
int [] blue = new int [12];
int [] yellow = new int [12];

//initializes vector array using constructor
VectorADT one = new VectorADT(blue);

//initializes vector array using constructor
VectorADT two = new VectorADT(yello);

//what am i supposed assign my return to?
something????? = VectorADT.add(one, two);
}
}

public class VectorADT
{
private int [] vector;
public VectorADT(int [] intArray)
{
//constructor that initializes instance variable vector.
//vector ends up being the same size as the array in the
//constructors parameter. All slots initialized to zero.
}
public static VectorADT add(VectorADT one, VectorADT two)
{ //I used one and two instead of v1 and v2

//some if statements and try-catch blocks for exceptions i need
//if no exceptions thrown...
int [] sum = new int [one.vector.length]; //one and two are same length
for(int i = 0; i < one.vector.length; i++)
{
sum[i] = one.vector[i] + two.vector[i];
}
return //Totally confused here :(
}

//other methods similar to VectorADT add() also exist...
}

任何帮助或指导将非常感激。谢谢

最佳答案

理解上的脱节似乎是因为方法本身不返回类,但它们可以返回类的实例(对象)。

public static VectorADT add(VectorADT one, VectorADT two) 

该方法签名表示该方法接受两个 VectorADT 类型的对象,并返回一些同样为 VectorADT 类型的对象。据推测,返回的这个对象将是您在方法中的某个时刻创建的某个新对象,目的是将其返回到调用您的方法的任何地方。

VectorADT myVectorADT = new myVectorADT(..) //define a new object
//Do some stuff to make myVectorADT have the proper values, for example summing vector one and two's elements
return myVectorADT; //return it!

首先确保检查每个提供的对象不为空

if (one == null || two == null) //throw something

然后简单地,在您的方法中创建一个新 vector ,用 vector 1 + vector 2 的元素填充它,然后返回它,如上所示。

这是一个可能有帮助的示例,它是独立的

class A {
public int value;
public A(int k) { //Constructor
value = k;
}
}

现在让我们定义一个像上面这样的方法

public static A addMethod (A one, A two) { //Method returns class type A, accepts two variables of type A
A returnObject = new A(one.value + two.value);
return returnObject;
}

这是一个简单的示例,但说实话,它与您所拥有的几乎相同。现在可以像下面这样调用上面的方法:

A firstObject = new A(5);
A secondObject = new A(3);
A newObject = addMethod(firstObject, secondObject);

System.out.println(newObject.value); //prints 8

关于java - 从 Java 中的方法返回类时的方法规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17642900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com