【问题标题】:Sorting and Displaying Entries from an Array in Java在 Java 中对数组中的条目进行排序和显示
【发布时间】:2014-03-24 10:19:10
【问题描述】:

我编写了这个将数字等级分类为字母等级的程序:

        int [] a = new int[20];
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Enter 20 Grades to be Counted:");

    for (int i = 0; i < a.length; i++)
    {
        a[i] = keyboard.nextInt();
    }


    for (int i = 0; i < a.length; i++)
    {
        if (a[i] >= 90)
        aCount++;

        else if(a[i] < 90 && a[i] >=80)
        bCount++;

        else if (a[i] < 80 && a[i] >= 70)
        cCount++;

        else if (a[i] < 70 && a[i] >=65)
        dCount++;

        else
        fCount++;
    }


    System.out.println("Number of A's: " + aCount);
    System.out.println("Number of B's: " + bCount);
    System.out.println("Number of C's: " + cCount);
    System.out.println("Number of D's: " + dCount);
    System.out.println("Number of FAILURES: " + fCount);
}

}

我想要做的是获取输入的成绩,并在各自的字母中显示实际的数字成绩。有点像这样:

A: 100 95 90

B: 88 85

C: 79 77

...等等。如何做到这一点?

【问题讨论】:

标签: java sorting


【解决方案1】:

您可以使用 Sets 来存储各个成绩。要按排序顺序存储成绩,您可以使用TreeSet&lt;Integer&gt;。然后遍历集合。

    int [] a = new int[20];
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Enter 20 Grades to be Counted:");

    for (int i = 0; i < a.length; i++)
    {
        a[i] = keyboard.nextInt();
    }


    TreeSet<Integer> setA = new TreeSet<Integer>();
    TreeSet<Integer> setB = new TreeSet<Integer>();
    TreeSet<Integer> setC = new TreeSet<Integer>();
    TreeSet<Integer> setD = new TreeSet<Integer>();
    TreeSet<Integer> setF = new TreeSet<Integer>();
    for (int i = 0; i < a.length; i++)
    {
        if (a[i] >= 90){
            aCount++;
            setA.add(a[i]);
        }

        else if(a[i] < 90 && a[i] >=80){
            bCount++;
            setB.add(a[i]);
        }

        else if (a[i] < 80 && a[i] >= 70){
            cCount++;
            setC.add(a[i]);
        }

        else if (a[i] < 70 && a[i] >=65){
            dCount++;
            setD.add(a[i]);
        }

        else{
            fCount++;
            setF.add(a[i]);
        }
    }


    System.out.println("Number of A's: " + aCount);
    System.out.print("A's: ");
    for(Integer x : setA){
        System.out.print(x + " ");
    }
    System.out.println();
    System.out.println("Number of B's: " + bCount);
    System.out.print("A's: ");
    for(Integer x : setA){
        System.out.print(x + " ");
    }
    System.out.println();

    System.out.println("Number of C's: " + cCount);
    System.out.print("B's: ");
    for(Integer x : setB){
        System.out.print(x + " ");
    }
    System.out.println();
    System.out.println("Number of D's: " + dCount);
    System.out.print("C's: ");
    for(Integer x : setC){
        System.out.print(x + " ");
    }
    System.out.println();
    System.out.println("Number of FAILURES: " + fCount)
    System.out.print("D's: ");
    for(Integer x : setD){
        System.out.print(x + " ");
    }
    System.out.println();

编辑:如果出现重复,您可以使用 ArrayList 存储值,然后在显示结果之前使用 Collections.sort 对 ArrayList 进行排序。

【讨论】:

  • 我猜这行不通,因为它会消除重复的结果。他可能需要使用 List 而不是 Set
  • 我已经编辑了帖子以防出现重复。
猜你喜欢
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多