これは、Javaクラスの演習の1つでの指示です。何よりもまず、私は「宿題をする」と言いたいのですが、StackOverflowの誰かにこれに答えてくれるように頼むのが面倒なだけではありません。この特定の項目は、他のすべての演習の中で私の問題でした。これは、このための「完璧なアルゴリズム」を見つけるのに苦労してきたためです。
10個の整数値を入力し、昇順または降順で表示するJAVAプログラムを作成します。注:Arrays.sort()は許可されていません。
これは私が思いついたコードです。動作しますが、明らかな欠陥が1つあります。同じ値を2回以上入力すると、たとえば次のようになります。
5、5、5、4、6、7、3、2、8、10
入力された3つの5のうち1つだけがカウントされ、出力に含まれます。私が得る出力(昇順)は次のとおりです。
2 3 4 5 0 0 6 7810。
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]+" ");
}
}
}
}