Java 为什么[0]的输出为0而不是-1?

Java 为什么[0]的输出为0而不是-1?,java,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++) {

我不熟悉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]);       
    }   
}   
类测试\u数组{
//测试数组类
公共静态void main(字符串参数[]){
int[]a={4,2,99,9,-1,0};
int small=a[0];
对于(inti=1;i如果(a[i]您不知道是要在变量“small”中保留最小的元素,还是在数组的第0个元素中保留最小的元素。您正在更改[0],但与small相比。

您不知道是要在变量“small”中保留最小的元素还是在数组的第0个元素中保留最小的元素。您正在更改[0]但相比之下,小

int small = a[0];
这是你给小四的

如果找到一个较小的值,则不会更改此值。相反,您将通过以下方式将较小的值更改为此值:

a[i] = small;
此代码和小值根本不会更改。您的“小”值始终为4

当它比较[5]和small(表示0和4)时,它传递if语句并生成[0]=a[5](表示为“0”)

您使用此algoryhtm仅与数组的第一个字符进行比较,但需要将其与动态“小”值进行比较

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);       
    }   
}       
它将对所有数组进行排序。然后,arr[0]将是最小值,arr[arr.lenght-1]将是最大值

这是你给小四的

如果找到一个较小的值,则不会更改此值。相反,您将通过以下方式将较小的值更改为此值:

a[i] = small;
此代码和小值根本不会更改。您的“小”值始终为4

当它比较[5]和small(表示0和4)时,它传递if语句并生成[0]=a[5](表示为“0”)

您使用此algoryhtm仅与数组的第一个字符进行比较,但需要将其与动态“小”值进行比较

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

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

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

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

if(a[i]

尽管有多种方法可以从数组中找到最小的元素,但让我们关注一下您的方法。您的方法将最小的元素置于第0个索引处。您不需要变量
small
,还需要修改if条件中的代码,如下所示

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

if(a[i]

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

迭代1

i =1
a[1]=2
small =4
a[1]<small  -> a[0] =2 a[1] -> 4  
i=1
a[1]=2
小=4
a[1]a[0]=2 a[1]>4
第二次迭代

i =2
a[2]=99
small =4
a[2]<small  // False
i=2
a[2]=99
小=4
a[2]4
在上一次迭代中,
a[0]
将变为0,当您在循环外打印它时,它将显示0

如果要查找数组中的最小元素,请参阅


希望这有帮助。

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

迭代1

i =1
a[1]=2
small =4
a[1]<small  -> a[0] =2 a[1] -> 4  
i=1
a[1]=2
小=4
a[1]a[0]=2 a[1]>4
第二次迭代

i =2
a[2]=99
small =4
a[2]<small  // False
i=2
a[2]=99
小=4
a[2]4
在上一次迭代中,
a[0]
将变为0,当您在循环外打印它时,它将显示0

如果要查找数组中的最小元素,请参阅


希望这能有所帮助。

我只是尝试了一些不同的方法,希望比较起来更简单,并找到数组中最小的元素

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

我只是尝试了一些不同的方法,希望比较起来更简单,并找到数组中最小的元素

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

尝试
if(a[i]
System.out.println(small);
@Shiv_k从数组中查找最小值有多种方法。您的方法基于在第0个索引处移动最小值,我已将您的方法包括在我的答案中,并告诉了另一种解决方案,希望它会有所帮助。尝试
if(a[i]
System.out.println(small)
@Shiv_k从数组中查找最小值的方法有很多种。您的方法基于在第0个索引处移动最小值,我已将您的方法包括在我的答案中,并告诉了另一种解决方案,希望它会有所帮助。如果我们使用内置函数,可以减少代码行数,这样会更好,而且会更方便与此方法相比,如果我们使用内置函数,它可以减少代码行数,并且比此方法快得多。请告诉我此代码是否有效?请告诉我此代码是否有效?