用于排列数字数组的代码片段中的逻辑错误

这是用java写的一段代码,将数字的数组按升序排列,然后显示最大和最小的数字。没有语法错误,但我认为这是一个逻辑错误,运行代码后,给出的输出如下:

The numbers are:
3
1
4
5
2
the min number is:3
the max number is:2
15
public class Main
{

    public static void main(String args[]) 
    {
        int list[]={2,5,4,1,3};

        int len = list.length;
        int sum=0; 
        int tmp; 
       
       for(int i=0; i<len-1; i++)
       {
           for(int j=0; j<len-i-1; j++)
           {
               if(list[j]>list[j+1]);
               {
                   tmp= list[j];
                   list[j]=list[j+1];
                   list[j+1]=tmp;
               }
           }
       }
       System.out.println("The numbers are:");
       for(int i=0; i<len;i++)
       {
       System.out.println(list[i]);
       }
       System.out.println("the min number is:"+ list[0]);
       System.out.println("the max number is:"+ list[4]);
    
    for (int i=0; i<len; i++)
    sum = sum + list[i];
    System.out.println(sum);
    }
}

回答

删除;after 语句if(list[j]>list[j+1]);
您已通过放置 来终止 if 语句;。删除它以使其工作。

这是一个有效的代码,但不正确:

if(list[j]>list[j+1]); //<-- if clause with one empty statement.
{                      //<-- here new code block started not related to the if
    tmp= list[j];
    list[j]=list[j+1];
    list[j+1]=tmp;
}

将其更改为:

if(list[j]>list[j+1]) //<-- if clause with 3 statements
{                     
    tmp= list[j];
    list[j]=list[j+1];
    list[j+1]=tmp;
}

提示:您可以使用现有 API 打印数组:

System.out.println(Arrays.toString(list));

输出:

[1, 2, 3, 4, 5]


以上是用于排列数字数组的代码片段中的逻辑错误的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>