在这种情况下,如何使用常规for循环来确定方阵的最大计算面积?

时间:2014-03-16 13:46:14

标签: java arrays

我是编程新手并且发现阵列非常混乱。这就是我到目前为止所做的。我希望有人可以帮我解释为什么我不能将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;

 }  

}

1 个答案:

答案 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;
}

没关系。