繁体   English   中英

如何将数组传递给另一个类以查找最小值?

[英]How do I pass an array to another class to find the minimum value?

我试图通过创建一个新的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类包含您的main,因此在创建array1 ,您试图创建一个包含实际程序的数组。

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

由于您没有定义大小,因此将失败,但是即使没有定义,也将无法正常工作。

我假设您打算创建一个int数组,然后对其进行循环。

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

在您的方法中,您传入了一个称为arrint数组,因此需要使用该数组进行循环。

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

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

假设您想从这两个数组中找到最小值,则我修改了代码片段以实现此目的。 如果您需要不同地处理第二个数组,请修改处理secondArr的循环。

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

类名称在PascalCase中,实例在camelCase中。

要调用该方法,请使用以下代码段。

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 ,因此打印指令始终无法访问。

minWeight中的错误不是fom数组参数,而是来自以下行:

mooseWeight array1[] = new mooseWeight[];

您无法在Java中分配未知维的数组。 另外,您尝试这样做没有任何意义。 只需从Java方法中删除上面的行,并将参数名称更改为array1。

获取一个像netbeans或eclipse这样的IDE。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM