gpt4 book ai didi

java - 在java中将数组对象作为方法参数传递

转载 作者:行者123 更新时间:2023-12-01 14:45:48 24 4
gpt4 key购买 nike

我正在尝试读取图像文件的数量,并且我想将它们相互比较。我创建了一个大小为 5 的数组对象,并为其分配了 5 个图像。我尝试通过将数组对象传递给方法来比较每个图像。但它向我显示了一个错误。谁能帮我吗?

File[] f= new File[5];

f[1]= new File("p1.png");

f[2]= new File("p2.png");

f[3]= new File("p3.png");

f[4]= new File("p4.png");

f[5]=new file("p5.png");

for(int i=1;i<5;i++)

{

compare(f[i],f[i++]);

}

public void compare(File fi[1],File fi[2])
{


BufferedImage image = ImageIO.read(fi[1]);
int width = image.getWidth(null);

int height = image.getHeight(null);

int[][] clr= new int[width][height];

BufferedImage images = ImageIO.read(fi[2]);

int widthe = images.getWidth(null);

int heighte = images.getHeight(null);

int[][] clre= new int[widthe][heighte];
}

最佳答案

几个问题:

  1. 这一行

    public void compare(File fi[1],File fi[2])

    是一个语法错误。应该是

    public void compare(File f1, File f2)

    (显然参数的名称由您决定)。

  2. 调用时使用

    compare(f[i], f[i + 1]);

    而不是i++ .

  3. 此行尝试写入不存在的数组槽:

     f[5]=new file("p5.png");

    ...因为您的数组定义为 new File[5] ,这意味着它有插槽 0通过4 。您需要更改插槽中的所有线路设置值才能使用 0通过4而不是1通过5 .

  4. 您的循环边界错误。它们应该是0< f.length - 1而不是1< 5这里:

    for(int i = 0; i < f.length - 1; i++)

    这样做有两个原因< f.length - 1而不是< 5 。首先,因为您使用 i + 1在循环体中,您想提前停止一个槽。其次,如果你改变f的长度稍后,您必须记住更新 5关于for循环也是如此,这是一个等待发生的维护问题。 (请注意,循环是到 i < f.length - 1 ,因为您在循环体中使用 i + 1 。通常循环是 0< length ,但在本例中不是。)

我当时就停止阅读代码了,所以不能保证不存在其他基本问题。我建议学习一些基本的 Java 教程。

关于java - 在java中将数组对象作为方法参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15447791/

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