为什么输出为0表示[0]而不是-1?

时间:2017-02-07 05:30:09

标签: java

我是java数组的新手,我想在数组包含负数元素时计算数组中的小元素。

class test_array {
    //test_array class  
    public static void main(String args[]) {
        int[] a = {4, 2, 99, 9, -1, 0};           
        int small = a[0];

        for (int i = 1; i < a.length; i++) {                                       
            if(a[i]<small) {                       
                a[0]=a[i];                         
                a[i]=small;
            } 
        }

        System.out.println(a[0]);       
    }   
}   

5 个答案:

答案 0 :(得分:1)

int small = a[0];

这里你给了4个小

如果找到较小的值,则不会更改此值。而不是你通过

将较小的一个变成这个值
a[i] = small;

此代码和小值根本没有变化。你小的&#39;值总是4。

当它比较[5]和小(意味着0和4)时,它通过if语句并使[0] = a [5](给它&#39; 0&#39;)。

你只是将数组的第一个字符与这个algoryhtm进行比较,但是你需要将它与动态的&#34; small&#34;进行比较。值。改变这样的代码。

class test_array {
//test_array class  

    public static void main(String args[])
    {
            int[] a={4,2,99,9,-1,0};           
            int small=a[0];

        for (int i=1;i<a.length;i++)               
        {                                      
            if(a[i]<small)
            {                                             
                small=a[i];
            } 
        }

        System.out.println(small);       
    }   
}       

选择第一个数组元素为小,然后比较。如果值较小,请将此值设为“小”。在所有数组的循环中执行它并找到最小值。

奖励:顺便说一句,开始使用简单的算法就可以了,但是要知道在困难时期有更简单的方法对数组进行排序并找到最小值和最大值,例如

Arrays.sort(arr);

它将对所有数组进行排序。那么arr [0]将是min,而arr [arr.lenght-1]将是最大值。

答案 1 :(得分:1)

虽然有各种方法可以从数组中找到最小的元素,但我们可以专注于您的方法。您的方法在第0个索引处带来最小元素。您不需要变量small,还需要修改if条件中的代码,如下所示。

if(a[i]<a[0]){                    
       int temp = a[i];
       a[i] = a[0];
       a[0] = temp;                    
}

上面将移动第0个索引处的最小元素。其他方式只是在变量中迭代数组时继续分配较小的元素,并且在循环执行完成后,您可以使用最小的元素。如果您只想知道最小元素,这种替代方法会更有效,因为它不涉及元素的移位。 @ReadyFreddy提到了这种方法 https://stackoverflow.com/a/42082585/504133

答案 2 :(得分:0)

您是否想要保留变量中的最小元素并且#34;小&#34;或者在数组的第0个元素中。你正在改变一个[0],但比较小。

答案 3 :(得分:0)

您的代码正在打印要比较的最后一个元素。

迭代1

i =1
a[1]=2
small =4
a[1]<small  -> a[0] =2 a[1] -> 4  

迭代2

i =2
a[2]=99
small =4
a[2]<small  // False

迭代3

i =3
a[3]=9
small =4
a[3]<small  // False  

迭代4

i =4
a[4]=-1
small =4
a[4]<small  -> a[0] =-1 a[4] -> 4

迭代5

i =5
a[5]=0
small =4
a[5]<small  -> a[0] =0 a[5] -> 4

在最后一次迭代中,a[0]将变为0,当您在循环外打印它时,它将显示为0.

如果您希望找到阵列中最小的元素,请参阅Find the smallest element in an array.

希望这有帮助。

答案 4 :(得分:0)

我只是尝试了一些不同的希望,这比较简单,比较并找到数组中的最少元素。

public static void main(String args[]) {
        int[] a = { 4, 2, 99, 1, -2, 0 };
        Arrays.sort(a);
        System.out.println(a[0]);
    }