【问题标题】:How do I pass an array to another class to find the minimum value?如何将数组传递给另一个类以找到最小值?
【发布时间】:2017-03-06 12:22:12
【问题描述】:

我试图通过创建一个新的 Java 类来找到数组中的最小值。我在传入数组并使用它来查找数组的最小值时遇到问题。

我总共有两个单独的数组,我试图找到它们的值。

这是我创建的第一个类:

import java.util.*;

public class mooseWeight
{
    public int main(String[] args)
    {
        int[] length1;
        int[] length2;

        length1 = new int[20];
        length2 = new int[50];

        //Length 1
        System.out.println("Array 1:");
        Random rnd = new Random();
        for(int i = 0; i<length1.length; i++)
        {
            length1[i] = rnd.nextInt(400) + 250;
            System.out.println(length1[i]);
            return length1[i];
        }

        System.out.println("-----------------------------------");

        //Length2
        System.out.println("Array 2:");
        Random rnd2 = new Random();
        for(int j = 0; j < length2.length; j++)
        {
            length2[j] = rnd2.nextInt(400) + 250;
            System.out.println(length2[j]);
            return length2[j];
        }
    }
}

目前设置为查找 length1[](也就是第一个数组)的最小值。

这是我试图将数组传递到的类:

public class minWeight
{
    public static int getArrayMin(int[] arr)
    {
        mooseWeight array1[] = new mooseWeight[];


        int minValue = array1[0];
        for (int i = 0; i < array1.length; i++) 
        {
            if (array1[i] < minValue) 
            {
                minValue = array1[i];
            }

            //return minValue;
        }
        return minValue;
        System.out.println(minValue);
    }
}

我当前的错误:

1 error found:
File: D:\2016-2017\Fall2016\201_CSCE_Programming\Lab 7\minWeight.java  [line: 5]
Error: array dimension missing

【问题讨论】:

  • mooseWeight array1[] = new mooseWeight[];你必须给数组一个大小
  • mooseWeight array1[] = new mooseWeight[]; 正在创建一个 mooseWeight 对象数组。您正在创建它,然后尝试从中获取价值。如果要将int 存储在数组中,则需要创建一个整数数组。实际上,您正在传递arr,因此删除对array1 的所有引用并将它们替换为arr,然后松开mooseWeight 行,它实际上并没有做任何事情。
  • @Brunaldo 我有 2 个要通过的数组。我的第一个数组长度为 20。我是否将 '20' 放在括号 '[]' 中?
  • 代码质量评论:最好遵循 Java 命名约定:类使用 CamelCase 和首字母大写,这样人们可以很容易地将它们与变量/方法区分开来.因此,调用您的类MooseWeightminWeight 使它们与专业Java 世界所期望的一致。然后实际说明:您的 MooseWeight 是您的入口点类。不要在其他类中创建实例(执行你的程序已经这样做了)。这是你几乎总是想独自离开的一门课。
  • @Mike'Pomax'Kamermans 类使用 PascalCase,变量和方法使用 camelCase 参见 MSDN 文档msdn.microsoft.com/en-IN/library/x2dbyw72(v=vs.71).aspx

标签: java arrays parameter-passing min


【解决方案1】:

您的 mooseWeight 类包含您的主程序,因此当您创建 array1 时,您正在尝试创建一个包含实际程序的数组。

mooseWeight array1[] = new mooseWeight[]; 正在创建一个 mooseWeight 对象数组。

由于您没有定义大小,这将失败,但即使没有定义,它也不会起作用。

我假设您打算创建一个 int 数组,然后循环遍历它。

如果您创建了一个 int 数组,然后尝试在不添加任何内容的情况下对其进行循环,则循环将不会执行任何操作,因为没有可迭代的内容。

在您的方法中,您传入一个名为arrint 数组,因此您需要使用它来循环。

如果您尝试将 2 个数组传递给方法,则创建一个数组作为方法的一部分仍然无效。

您需要修改方法声明以接受第二个数组。

假设您想从这两个数组中找到最小值,我已经修改了我的代码 sn-p 来做到这一点。 如果您需要以不同方式处理第二个数组,请修改处理 secondArr 的循环。

如 cmets 中所述,您的 mooseWeight 类应命名为 MooseWeight 以保持正确的 Java 命名约定。

类名用 PascalCase,实例用 camelCase。

要调用该方法,请使用以下 sn-p。

int[] ar1 = new int[20];
int[] ar2 = new int[50];
//Populate your arrays with values....

int minValue = MinWeight.getArrayMin(ar1, ar2);

类:

 public class MinWeight {
      public static int getArrayMin(int[] arr, int[] secondArr) {

        int minValue = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] < minValue) 
            {
                minValue = arr[i];
            }
         }

        for (int i = 0; i < secondArr.length; i++) {
            if (secondArr[i] < minValue) 
            {
                minValue = secondArr[i];
            }
         }          
        System.out.println(minValue);
        return minValue;
      }
    }

作为最后一个问题,在您的代码中,您在尝试打印结果之前返回 minValue,因此打印指令始终无法访问。

【讨论】:

    【解决方案2】:

    minWeight 中的错误不是来自数组参数,而是来自这一行:

    mooseWeight array1[] = new mooseWeight[];
    

    你不能在java中分配一个未知维度的数组。 此外,您这样做的尝试毫无意义。 只需从您的 java 方法中删除上面的行并将参数名称更改为 array1。

    获取像 netbeans 或 eclipse 这样的 IDE。

    【讨论】:

    • 我怀疑这可能是大学作业的一部分,这可能会妨碍使用 IDE。当我攻读学位时,我们必须使用计划文本编辑器来处理所有 Java 作业。非常令人沮丧,但我可以理解为什么教育机构会这样做。但是,让任何毕业生为现实世界做好准备并没有帮助。在那之后切换到 NetBeans 是绝对的幸福!
    猜你喜欢
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多