import java.util.*;
public class Test {
public static void main(String[] args)
{
int[] number = new int[50];
int index = 0;
boolean swap = true;
int temp;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter Number: ");
System.out.println(" ");
do
{
int input = keyboard.nextInt();
if (input != -999)
number[index++] = input;
else
break;
} while (index != 0);
int[] newNumbers = new int[index];
for (int i = 0; i < index; i++)
newNumbers[i] = number[i];
System.out.println("\nNumbers\t" + "Occurances");
goBack: for (int i = index - 1; i >= 0; i--)
{
for (int n = index - 1; n > i; n--)
if (newNumbers[n] == newNumbers[i])
continue goBack;
int count = 0;
for (int n = 0; n < index; n++)
if (newNumbers[n] == newNumbers[i])
count++;
for(int s=0; s < newNumbers.length-1; s++){
for(int j=1; j < newNumbers.length-s; j++){
if(newNumbers[j-1] > newNumbers[j]){
temp=newNumbers[j-1];
newNumbers[j-1] = newNumbers[j];
newNumbers[j] = temp;
}
}
}
System.out.println( newNumbers[i] + " " + count);
}
}
}
このコードは、キーボード スキャナーを介して入力を受け取ることを目的としています。入力された整数が比較され、配列 number[] の個別の要素のリストがソートされて出力されます。ただし、入力のリストにはいくつかの要素の倍数が含まれています。繰り返される要素は、カウントでマークされます。最終的な出力は、個別の配列要素 (重複なし) のリストであり、それぞれの数が大きいものから小さいものへと並べられます。
入力は次のとおりです: -12, 3, -12, 4, 1, 1, -12, 1, -1, 1, 2, 3, 4, 2, 3, -12 、インデックス 4 のカウントは 4 ですが、カウントは 2 です。選択、バブル、および交換ソート アルゴリズムを試してみましたが、すべて同様の結果が得られました。どんなアドバイスでも大歓迎です:)。