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



这是一个用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);
}
}

在语句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]

修正循环,迭代数组时需要更新最小值和最大值

public static void main(String[] args) throws Exception {
int arr[]={2,5,4,1,3};
int len = arr.length;
int sum=0; 
int tmp; 

for (int i = 0; i < arr.length; i++) {     
for (int j = i+1; j < arr.length; j++) {     
if(arr[i] > arr[j]) {    
tmp = arr[i];    
arr[i] = arr[j];    
arr[j] = tmp;  

}     
}           

//System.out.println("The numbers are:");
System.out.println(arr[i]);
}    


System.out.println("the min number is:"+ arr[0]);
System.out.println("the max number is:"+ arr[4]);
for (int i=0; i<len; i++)
sum = sum + arr[i];
System.out.println(sum);

}

相关内容

  • 没有找到相关文章

最新更新