95%完成JAVA阵列代码。任何人都可以帮我找到我的错误吗?

时间:2013-11-21 04:45:14

标签: java arrays compiler-errors

public class ArrayProject
{
    private int[] myArray;

    public static void main(String[] args)
    {
        int myArray[] = {2, 45, 12, 15, 16};

        System.out.println("Minimium Value:" + findMin(myArray));
        System.out.println("Maximium Value:" + findMax(myArray));
    }

    public ArrayProject(int[] x)
    {
        myArray=x;
    }

    public static int findMin(int[] myArray){
        int minValue = myArray[0];
        for(int i=1;i<myArray.length;i++){
            if(myArray[i] < minValue){
                minValue = myArray[i];
            }
        }
        return minValue;
    }

    public static int findMax(int[] myArray){
        int maxValue = myArray[0];
        for(int i=1;i<myArray.length;i++){
            if(myArray[i] > maxValue){
                maxValue = myArray[i];
            }
        }
        return maxValue;
    }

    public void swap (int minIndex, int maxIndex)
    {
        int temp;
        temp = myArray[minIndex];
        myArray[minIndex] = myArray[maxIndex];
        myArray[maxIndex] = temp;
    }

    public int findValue(int value)
    {
        for(int i=1;i<myArray.length; i++){
            System.out.println(myArray[i]);
            return myArray[i];

        }

    }

}

我在编译findValue方法时遇到问题。最后一种方法。任何人都可以帮我解决? ........................ 我对你如何返回值感到困惑。

该类基本上找到min max和数组值。

6 个答案:

答案 0 :(得分:2)

如果找不到任何值,该怎么办?没有返回任何内容,但该方法需要int。您需要为findValue()中的所有可能方案返回一个int值。

您可以添加一个任意不可能的数字(根据您的期望),如-1:

return -1;

for (int i = 1; i < myArray.length; i++) {
        System.out.println(myArray[i]);
        return myArray[i];

}

如果没有找到值,因为您正在使用基元。如果您的返回类型是Integer,则可以返回null,这更有意义。否则,该方法仅适用于非负数。

答案 1 :(得分:1)

您永远不会创建ArrayProject的实例,因此您的构造函数永远不会被调用,myArray成员永远不会被设置。

答案 2 :(得分:1)

你在for循环中返回int。 尝试声明int变量赋值给它并返回该int变量。 或者返回整个数组

答案 3 :(得分:1)

并非findValue()函数中的每个代码路径都返回一个值。您需要在return循环之外添加for语句。这是必要的,因为for循环可能会也可能不会始终执行,具体取决于myArray的长度。如果for循环没有执行,那么你声明要返回的函数和int将不会执行任何return语句,编译器不允许这样做。

答案 4 :(得分:1)

你可以用它。

int[] nums={2, 45, 12, 15, 16};  
Arrays.sort(nums);  
System.out.println("Minimum = " + nums[0]);  
System.out.println("Maximum = " + nums[nums.length-1]);

答案 5 :(得分:1)

您的问题的基本修复,因为您的return语句位于for循环中,并且可能并不总是运行。

public int findValue(int value)
{
    int returnValue = -1;
    for(int i=1;i<myArray.length; i++){
        System.out.println(myArray[i]);
        returnValue = myArray[i];

    }
    return returnValue;
}

不是一个好的修复,但它编译。<​​/ p>

此外,如果函数需要查找值,则需要添加if语句以检查搜索的值是否与数组位置中的数字匹配

public int findValue(int value)
{
    int returnValue = -1;
    for(int i=1;i<myArray.length; i++){
        System.out.println(myArray[i]);
        if(value == myArray[i]){
            returnValue = myArray[i];
        }
    }
    return returnValue;
}

-1表示是否找不到该元素。