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

时间:2016-10-24 16:30:03

标签: java arrays parameter-passing min

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

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

这是我创建的第一堂课:

An unhandled exception has occured
Click here to reload the designer
Details:

System.TypeLoadException

Could not find Windows Runtime type 'Windows.ApplicationModel.Package'.

at Microsoft.Expression.HostUtility.Platform.AppContainerProcessDomainFactory.CreateDesignerProcess(String applicationPath, String clientPort, Uri hostUri, IDictionary environmentVariables, Int32& processId, Object& processData)
at Microsoft.Expression.DesignHost.Isolation.Primitives.ProcessDomainFactory.ProcessIsolationDomain..ctor(ProcessDomainFactory factory, IIsolationBoundary boundary, AppDomainSetup appDomainInfo, FrameworkName targetFramework, String identifier, String baseDirectory)
at Microsoft.Expression.DesignHost.Isolation.Primitives.ProcessDomainFactory.CreateIsolationDomain(IIsolationBoundary boundary)
at Microsoft.Expression.HostUtility.Platform.AppContainerProcessDomainFactory.CreateIsolationDomain(IIsolationBoundary boundary)
at Microsoft.Expression.DesignHost.Isolation.Primitives.IsolationBoundary.Initialize()
at Microsoft.Expression.DesignHost.Isolation.Primitives.IsolationBoundary.CreateInstance[T](Type type)
at Microsoft.Expression.DesignHost.Isolation.IsolatedObjectFactory.Initialize()
at Microsoft.Expression.DesignHost.Isolation.IsolationService.AttachEvents(IsolatedObjectFactory objectFactory)
at Microsoft.Expression.DesignHost.Isolation.IsolationService.CreateLease(IIsolationTarget isolationTarget)
at Microsoft.Expression.DesignHost.IsolatedDesignerService.CreateLease(IIsolationTarget isolationTarget, CancellationToken cancelToken, DesignerServiceEntry& entry)
at Microsoft.Expression.DesignHost.IsolatedDesignerService.IsolatedDesignerView.CreateDesignerViewInfo(CancellationToken cancelToken)
at Microsoft.Expression.DesignHost.Isolation.IsolatedTaskScheduler.InvokeWithCulture[T](CultureInfo culture, Func`2 func, CancellationToken cancelToken)
at Microsoft.Expression.DesignHost.Isolation.IsolatedTaskScheduler.<>c__DisplayClassa`1.<StartTask>b__6()
at System.Threading.Tasks.Task`1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()"

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

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

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];
        }
    }
}

我当前的错误:

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);
    }
}

2 个答案:

答案 0 :(得分:0)

您的mooseWeight课程包含您的主要内容,因此当您创建array1时,您正在尝试创建包含实际程序的数组。

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

由于你没有定义一个大小,这将失败,但即使它没有,它也行不通。

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

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

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

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

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

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

正如评论中所提到的,您的secondArr类应该被命名为mooseWeight以保持正确的Java命名约定。

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

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

MooseWeight

类别:

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

答案 1 :(得分:0)

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

['apps', 'apples']

您无法在java中分配未知维度的数组。 此外,您尝试这样做是没有意义的。 只需从java方法中删除上面的行,然后将参数名称更改为array1。

获取类似netbeans或eclipse的IDE。