Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,查找数组中的最小数_Java_While Loop - Fatal编程技术网

Java,查找数组中的最小数

Java,查找数组中的最小数,java,while-loop,Java,While Loop,这是过去一篇论文中的一个问题。我被要求创建一个静态方法arrayMin来查找数组arr中的最小值 我必须使用while循环,在每次迭代中,变量min将从第一个I元素返回最小的数字 有没有一种方法可以做到这一点而不用调用另一个方法/for循环并严格使用while循环,因为这个问题只值4%,包括编写循环不变量和javadoc。不确定我是否把问题复杂化了 public class Revision { public static int arr[] = new int[] { 5, 8, 4, 3,

这是过去一篇论文中的一个问题。我被要求创建一个静态方法arrayMin来查找数组arr中的最小值

我必须使用while循环,在每次迭代中,变量min将从第一个I元素返回最小的数字

有没有一种方法可以做到这一点而不用调用另一个方法/for循环并严格使用while循环,因为这个问题只值4%,包括编写循环不变量和javadoc。不确定我是否把问题复杂化了

public class Revision {

public static int arr[] = new int[] { 5, 8, 4, 3, 6, 2 };
public static int min = 1;

public static int arrayMin() {

    int i = 0;

    if (arr == null) {
        return 0;

    } else {
        while (i < arr.length) {
            // some function/method call to find smallest number of arr[i]
            i++;
            return min;
        }
    }
    return min;
}

public static void main(String[] args) {

    System.out.println(arrayMin());
}

}

您需要在循环外部有一个名为min的变量。您将使用该循环查找数组的最小值,并在循环完成时返回min

} else {
    int min = Integer.MAX_VALUE;

    while(i < arr.length) {
        // is arr[i] < min? If so, it's the new minimum
        i++;
    }

    return min;
}

您需要在循环外部有一个名为min的变量。您将使用该循环查找数组的最小值,并在循环完成时返回min

} else {
    int min = Integer.MAX_VALUE;

    while(i < arr.length) {
        // is arr[i] < min? If so, it's the new minimum
        i++;
    }

    return min;
}
有几件事:

数组不应该是静态的,应该将其作为参数传递给arrayMin方法; min应该是局部arrayMin变量,而不是静态变量; 最小值应初始化为Integer.MAX\u值。如果用1初始化它,而2恰好是数组的最小值,则永远不会返回它; 一个方法不能多次返回。一旦返回min,该方法就会结束。对于变量min将返回第一个i元素短语中的最小值,可能存在一些混淆。这可能意味着在每次迭代中,变量min将不会返回来自第一个i元素的最小值。 下面是一个重构:

public static int arrayMin(int[] arr) {
    int i = 0;
    int min = Integer.MAX_VALUE;
    if (arr == null) {
        return 0; // What if 0 is the minimum value? What do you want to do in this case?
    } else {
        while (i < arr.length) {
            if (arr[i] < min) {
              min = arr[i];
            }
            i++;
        }
    }
    return min;
}
有几件事:

数组不应该是静态的,应该将其作为参数传递给arrayMin方法; min应该是局部arrayMin变量,而不是静态变量; 最小值应初始化为Integer.MAX\u值。如果用1初始化它,而2恰好是数组的最小值,则永远不会返回它; 一个方法不能多次返回。一旦返回min,该方法就会结束。对于变量min将返回第一个i元素短语中的最小值,可能存在一些混淆。这可能意味着在每次迭代中,变量min将不会返回来自第一个i元素的最小值。 下面是一个重构:

public static int arrayMin(int[] arr) {
    int i = 0;
    int min = Integer.MAX_VALUE;
    if (arr == null) {
        return 0; // What if 0 is the minimum value? What do you want to do in this case?
    } else {
        while (i < arr.length) {
            if (arr[i] < min) {
              min = arr[i];
            }
            i++;
        }
    }
    return min;
}

有多种方法,但这里有一种。 公共静态int数组最小[]arr{

            boolean isFirstElement = true;

            int smallestNumber= 0;

            int index = 0;

            while(index < arr.length) {

                int temp= arr[index];

                 index++;

                if (isFirstElement) {

                    smallestNumber = temp;

                    isFirstElement = false;

                } else if (smallestNumber > temp) {

                    smallestNumber = temp;
                }
            }

}有多种方法可以做到这一点,但这里有一种。 公共静态int数组最小[]arr{

            boolean isFirstElement = true;

            int smallestNumber= 0;

            int index = 0;

            while(index < arr.length) {

                int temp= arr[index];

                 index++;

                if (isFirstElement) {

                    smallestNumber = temp;

                    isFirstElement = false;

                } else if (smallestNumber > temp) {

                    smallestNumber = temp;
                }
            }

}

您可以使用索引变量跟踪正点击数,如果相应的数字索引值比数组大小小一个,则该数字是最小的

class testtt{
    static int small=0;
    public static void  main(String[] args) {
        int arr[] = {9,2,3,4,5,6,7,8};      
        int i,index=0;      
        for(int q:arr)
        {                   
            for(i=0;i<arr.length;i++)
            {               
                if(q<arr[i])
                {
                    small=q;
                    index++;
                }
            }
            if(index==arr.length-1)
                System.out.println(small);  
        }   

    }
}

您可以使用索引变量来跟踪正点击数,如果相应的数字索引值比数组大小小一个,则该数字是最小的

class testtt{
    static int small=0;
    public static void  main(String[] args) {
        int arr[] = {9,2,3,4,5,6,7,8};      
        int i,index=0;      
        for(int q:arr)
        {                   
            for(i=0;i<arr.length;i++)
            {               
                if(q<arr[i])
                {
                    small=q;
                    index++;
                }
            }
            if(index==arr.length-1)
                System.out.println(small);  
        }   

    }
}

在代码中,如果arr!=null,否则为0,因为while循环中的return min语句。我认为返回数组中每个元素在该范围内可以接受的最小值是一个很好的优化。请注意,在Java中,0可能不是最小值,整数可能有负值。null值通常与0元素数组的含义不同。如果数组遇到null,最好检查null并抛出NullPointerException或IllegalArgumentException。在代码中,如果arr!=null,否则为0,因为while循环中的return min语句。我认为返回数组中每个元素在该范围内可以接受的最小值是一个很好的优化。请注意,在Java中,0可能不是最小值,整数可能有负值。null值通常与0元素数组的含义不同。如果数组遇到null,最好检查null并抛出NullPointerException或IllegalArgumentException。附加解释为+1,但请不要返回编程赋值的完整代码。附加解释为+1,但请不要返回编程赋值的完整代码。