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

标签 java arrays arguments

我正在尝试读取图像文件的数量,并且我想将它们相互比较。我创建了一个大小为 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/

相关文章:

python - 为什么切片二维数组的不同方法会给我一组额外的括号?

javascript - 函数内函数中参数的初始值是多少?

c - 当我们可以在函数内部使用 strlen() 来获取单词的长度时,为什么我们将字符串的长度作为参数发送给函数?

c - 当我在命令参数中输入 4/a 时,为什么不会输出 "invalid input"

c++ - 数组:仅将字符串数组的索引传递给 Int 数组的索引以供输出

java - Jaxb 未解码 xml

java - 在范围内无法访问 MainActivity 类型的封闭实例

java - 如何在不是来自 JNDI 的 JPA EntityMangerFactory 上设置数据源

java - 处理 borderlayout zk 上的事件折叠栏

c - Ansi C:高流量控制/仅用*星号替换第一次出现的内容,并删除每个重复项