Java 使用迭代器调用多参数方法
我正在尝试按区域对形状列表进行排序。我使用迭代器遍历列表,并对列表中的每个元素调用Rectangle.calculateArea,但打印的列表不会输出每个元素的面积。相反,输出是对每个元素的十六进制引用。下面是输出,后面是代码。如何使输出显示计算面积 矩形区域: Rectangle@15db9742 Rectangle@6d06d69c Rectangle@7852e922 Rectangle@4e25154f Rectangle@70dea4eJava 使用迭代器调用多参数方法,java,Java,我正在尝试按区域对形状列表进行排序。我使用迭代器遍历列表,并对列表中的每个元素调用Rectangle.calculateArea,但打印的列表不会输出每个元素的面积。相反,输出是对每个元素的十六进制引用。下面是输出,后面是代码。如何使输出显示计算面积 矩形区域: Rectangle@15db9742 Rectangle@6d06d69c Rectangle@7852e922 Rectangle@4e25154f Rectangle@70dea4e public class RectangleSo
public class RectangleSortTest {
public static void main (String[] args) {
List<Rectangle> list = new ArrayList<>();
//Create Rectangle ArrayList
list.add(new Rectangle(4, 3));
list.add(new Rectangle(3, 3));
list.add(new Rectangle(4, 4));
list.add(new Rectangle(5, 1));
list.add(new Rectangle(1, 1));
//Add Rectangle elements to Rectangle list
calculateListArea(list);
//Calculates area for each rectangle element
System.out.print("Rectangle Areas:");
printList(list);
//Print rectangle list after area calculation
}
private static void calculateListArea(List<Rectangle> list) {//Calculates Rectangle list areas
ListIterator<Rectangle> iterator = list.listIterator();
while (iterator.hasNext()) {
Rectangle rectangleElement = iterator.next();
Rectangle.calculateArea(rectangleElement.getWidth(), rectangleElement.getHeight());
}
}
private static void printList(List<Rectangle> list) {//Print Rectangle list
for (Rectangle element: list) {
System.out.printf("%n%s", element);
}
}
公共类矩形件测试{
公共静态void main(字符串[]args){
列表=新的ArrayList();
//创建矩形阵列列表
添加(新矩形(4,3));
添加(新矩形(3,3));
添加(新矩形(4,4));
添加(新矩形(5,1));
添加(新矩形(1,1));
//将矩形元素添加到矩形列表
计算标准a(列表);
//计算每个矩形元素的面积
系统输出打印(“矩形区域:”);
打印列表(列表);
//面积计算后打印矩形列表
}
私有静态void calculateListArea(列表){//计算矩形列表区域
ListIterator迭代器=list.ListIterator();
while(iterator.hasNext()){
矩形矩形元素=迭代器.next();
calculateArea(rectangleElement.getWidth(),rectangleElement.getHeight());
}
}
私有静态无效打印列表(列表列表){//打印矩形列表
用于(矩形元素:列表){
System.out.printf(“%n%s”,元素);
}
}
}您可以将其简化如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class RectangleSortTest {
public static void main(String[] args) {
List<Rectangle> list = new ArrayList<Rectangle>();
// Add some rectangle to a list
list.add(new Rectangle(4, 3));
list.add(new Rectangle(3, 3));
list.add(new Rectangle(4, 4));
list.add(new Rectangle(5, 1));
list.add(new Rectangle(1, 1));
// Sort the list on area
Collections.sort(list);
// Print the list
System.out.println("Rectangles in ascending order of areas:");
printList(list);
}
static void printList(List<Rectangle> list) {
for (Rectangle element : list) {
System.out.println(element);
}
}
}
class Rectangle implements Comparable<Rectangle> {
int width, height, area;
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getArea() {
return width * height;
}
@Override
public int compareTo(Rectangle rectangle) {
if (this.getArea() > rectangle.getArea())
return 1;
else if (this.getArea() == rectangle.getArea())
return 0;
else
return -1;
}
@Override
public String toString() {
return "Rectangle [width=" + width + ", height=" + height + ", area=" + this.getArea() + "]";
}
}
您正在调用
calculateArea
,但没有对结果执行任何操作。然后在System.out.printf
语句中,您只是打印矩形,而不是其面积。您打印的是矩形的实例,而不是计算结果。制作一个返回结果的方法,并在System.out.printf中使用它。
Rectangles in ascending order of areas:
Rectangle [width=1, height=1, area=1]
Rectangle [width=5, height=1, area=5]
Rectangle [width=3, height=3, area=9]
Rectangle [width=4, height=3, area=12]
Rectangle [width=4, height=4, area=16]