我是编程新手并且发现阵列非常混乱。这就是我到目前为止所做的。我希望有人可以帮我解释为什么我不能将maxArea设置为squareArray [0]以及我应该怎么做。我需要能够使用for循环将squareArray的maxArea作为double返回,同时为每个方形对象调用calculateArea方法。
public class Square{
private double sideLength;
public Square (double lengthOfSides){
sideLength = lengthOfSides;
}
public double calculateArea (){
double Area;
Area = sideLength * sideLength;
return Area;
}
public static double findMaximumArea(Square[] squareArray){
double maxArea;
squareArray[0] = maxArea;
for(int i = 0; i < squareArray.length; i++){
if(squareArray[i] > maxArea){
maxArea = squareArray[i];
}
return maxArea;
}
}
}
主要
public class SquareArrayTest {
public static void main(String[] args) {
Square testSquare = new Square(15);
if (testSquare.calculateArea() == 225) {
System.out.println(testSquare.calculateArea());
System.out.println("Your Square class is correct!");
}
Square square1 = new Square(23.5);
Square square2 = new Square(33.3);
Square square3 = new Square(14.9);
Square square4 = new Square(11.7);
Square[] squareArray = new Square[4];
squareArray[0] = square1;
squareArray[1] = square2;
squareArray[2] = square3;
squareArray[3] = square4;
}
}
答案 0 :(得分:0)
让我们逐行检查您的代码:
public static double findMaximumArea(Square[] squareArray){
因此,此方法返回squareArray的所有正方形中最大正方形的面积。细
double maxArea;
squareArray[0] = maxArea;
在这些行中,您的目的是使用数组的第一个方格之一初始化当前最大区域。但是分配的顺序错误,而你实际上并没有计算该区域。我在成为时阅读了=
。所以上面的行意味着:
数组的第一个元素变为 maxArea。
你真正想要的是
maxArea 变为数组第一个元素的区域:
double maxArea = squareArray[0].calculateArea();
让我们继续:
for (int i = 0; i < squareArray.length; i++){
所以你循环遍历数组中的所有quares。很好,即使你可以从第二个元素开始,因为你已经计算了第一个元素的面积。
if (squareArray[i] > maxArea){
maxArea = squareArray[i];
这次,分配顺序正确。但是,您再次将方形(squareArray[i]
,类型为Square)与区域(maxArea
,类型为double
)进行比较。您需要计算当前元素的面积,并将其与最大面积进行比较:
double area = squareArray[i].calculateArea();
if (area > maxArea) {
maxArea = area;
}
让我们继续:
return maxArea;
}
没关系。