这是我们Java课程中的一个练习指南。首先,我想说,我“做我的功课”,我并不是懒得在Stack Overflow上问别人来回答这个问题。这个具体项目是我所有练习中遇到的问题,因为我一直在努力寻找“完美的算法”。
编写JAVA程序,输入10个整数值,并按升序或降序显示。注意:不允许使用Arrays.sort()。
这是我想出来的代码,它可以工作,但有一个明显的缺陷。如果我输入两次或更多次相同的值,例如:
5、5、5、4、6、7、3、2、8、10
只有一个五将被计入输出。我获得的输出结果(按升序)是:
2 3 4 5 0 0 6 7 8 10。
编写JAVA程序,输入10个整数值,并按升序或降序显示。注意:不允许使用Arrays.sort()。
这是我想出来的代码,它可以工作,但有一个明显的缺陷。如果我输入两次或更多次相同的值,例如:
5、5、5、4、6、7、3、2、8、10
只有一个五将被计入输出。我获得的输出结果(按升序)是:
2 3 4 5 0 0 6 7 8 10。
import java.util.Scanner;
public class Exer3AscDesc
{
public static void main(String args[])
{
Scanner scan = new Scanner(System.in);
int tenNums[]=new int[10], orderedNums[]=new int[10];
int greater;
String choice;
//get input
System.out.println("Enter 10 integers : ");
for (int i=0;i<tenNums.length;i++)
{
System.out.print(i+1+"=> ");
tenNums[i] = scan.nextInt();
}
System.out.println();
//imperfect number ordering algorithm
for(int indexL=0;indexL<tenNums.length;indexL++)
{
greater=0;
for(int indexR=0;indexR<tenNums.length;indexR++)
{
if(tenNums[indexL]>tenNums[indexR])
{
greater++;
}
}
orderedNums[greater]=tenNums[indexL];
}
//ask if ascending or descending
System.out.print("Display order :\nA - Ascending\nD - Descending\nEnter your choice : ");
choice = scan.next();
//output the numbers based on choice
if(choice.equalsIgnoreCase("a"))
{
for(greater=0;greater<orderedNums.length;greater++)
{
System.out.print(orderedNums[greater]+" ");
}
}
else if(choice.equalsIgnoreCase("d"))
{
for(greater=9;greater>-1;greater--)
{
System.out.print(orderedNums[greater]+" ");
}
}
}
}