用于排列数字数组的代码片段中的逻辑错误
这是用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]