【发布时间】:2021-03-28 06:21:50
【问题描述】:
这是用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);
}
}
【问题讨论】:
-
我推荐看看How to debug small programs。这是作为程序员必须掌握的技能。调试您的代码不是我们的工作。
-
除了 if 分号之外,考虑一下用于排序的循环不变量:假设
list[0..i-1]已排序,更新list以便list[0..i]已排序。内循环会这样做吗? -
不应该作为错字关闭吗?