3
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 的计数应为 2,而它的计数应为 2。我尝试了选择、冒泡和交换排序算法,结果都相似。任何建议将不胜感激 :) 。

4

2 回答 2

1

希望这会有所帮助,尽管可能是比这更好的解决方案:

public static void main(String[] args) {

    int[] numbers  = new int[50] ;
    int index = 0;
    int temp;
    Scanner keyboard = new Scanner(System.in);
    // get the user input
    System.out.print("Enter Number: ");
    System.out.println(" ");
    do {
        int input = keyboard.nextInt();
        if (input != -999)
            numbers[index++] = input;
        else
            break;
    } while (index != 0);
    keyboard.close();
    System.out.println("\nNumbers\t" + "Occurances");
    // create a new array and store the user input
    int[]  newNumbers = new int[index];
    for (int i = 0; i < index; i++)
        newNumbers[i] = numbers[i];
    // sort the array
    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(Arrays.toString(newNumbers));
    int count = 1;
    int prevElement = 0;
    if (newNumbers.length > 0) {
        prevElement = newNumbers[0];
    }
     // print the results
    for (int x = 1; x < newNumbers.length; x++) {
        if (newNumbers[x] == prevElement) {
            count++;
        } else {
            System.out.println(prevElement + " occurs " + count + "times");
            prevElement = newNumbers[x];
            count = 1;
        }
    }
    System.out.println(prevElement + " occurs " + count + "times");

}
于 2013-04-17T06:41:19.793 回答
0

嗨,如果你真的想要更短的::

import java.util.*;

public class Test {

    public static void main(String[] args)
    {
        Integer number[] = new Integer[50];
        int index = 0;

        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);

        List<Integer> asList = Arrays.asList(number);
        for(Integer n: asList){
            if(n != null)
            System.out.println(n + " occurance " + Collections.frequency(asList,n));
        }
    }
}
于 2013-04-17T07:32:48.467 回答