如何对从数组输入的数字进行排序,以告知输入数字的次数

时间:2014-04-17 15:50:44

标签: java sorting loops for-loop temp

好的,这是我的代码。我应该收集10个输入数,然后按照它们出现的数量按降序排序。

实施例。 {0,0,1,2,2,2]

我的输出为" Mode = 2然后有2次出现3次,0次出现2次,1次出现。"

我的代码可以收集10个整数并找到模式但我在尝试按这种方式对数字进行排序时遇到问题。这就是我到目前为止所遇到的问题。

import java.util.*;
class question2 
{
public static void main(String[] args) 
{
    Scanner scan = new Scanner(System.in);
     int[] arrTwo = new int[10];
     int x=0;
     for (int i = 0; i < 10; i++)
    {
        System.out.println("Enter number: " + (i + 1));
        arrTwo[i] = scan.nextInt();
    }
    mode(arrTwo);

    int temp;
    int bs[] = new int[10];
    for ( x=0 ; x<=8 ; ++x ) 
    {
        if (bs[x]>bs[x+1])
        {
            temp=bs[x];
            bs[x]=bs[x+1];
            bs[x+1]=temp;
            x=-1;
        }
    }
    for(int i = 0; i <= bs.length-1; i++)
        {
        for(int index=0; index <= 99 ; index++)
            {           
            if (i == i)
                {
                bs[i] +=1;
                }
            }
            System.out.println("The number " + i + " is generated " +arrTwo[i] + " times");
        }

}
public static void mode(int[] array)
{
    int modeTrack[] = new int[10];
    int max =0; int number =0;
    for (int i = 0; i < array.length; i++)
    {
        modeTrack[array[i]] += 1;
    }

    int maxIndex = 0;
    for (int i = 1; i < modeTrack.length; i++)
    {
        int newNum = modeTrack[i];
        if (newNum > modeTrack[maxIndex])
        {
            maxIndex = i;
        }

    }System.out.println("The mode is: "+maxIndex);

}

我的输出不是列出我的数字,只是0-9,生成的时间只是从1-9开始,没有基础或顺序。

1 个答案:

答案 0 :(得分:0)

此代码:

    int bs[] = new int[10];
    for ( x=0 ; x<=8 ; ++x ){
        if (bs[x]>bs[x+1])        {
            temp=bs[x];
            bs[x]=bs[x+1];
            bs[x+1]=temp;
            x=-1;
        }
    }

什么都不做。在初始化时,bs用零填充bs [x-1]永远不会大于bs [x],因为所有值都相同。 还

if (i == i){

永远是真的